Sha256: f5a9b39afab7e294404ac1280d20fa73a6ca7718c45596d298cf614c3589f6c5

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

require 'rails_drive/google'

module RailsDrive
  # Alias the module
  Oauth2       = Google::Apis::Oauth2V2
  Auth         = Google::Auth

  class Signin
    include DriveConfig

    def initialize(id_token_string)
      @id_token = id_token_verifier(id_token_string)
    end

    def create_or_get_user
      if @id_token != nil
        user = User.find_by open_id: @id_token.user_id
        if user
          user
        else
          User.create open_id: @id_token.user_id, email: @id_token.email
        end
      end
    end

    private

    def id_token_verifier(id_token_string)
      client_id    = Auth::ClientId.from_file CLIENT_SECRETS_PATH
      auth_service = Oauth2::Oauth2Service.new
      id_token     = auth_service.tokeninfo(id_token: id_token_string)
      begin
        raise 'token not issued to us' if id_token.issued_to != client_id.id
        raise 'token not issued to us' if id_token.audience != client_id.id
        id_token
      rescue Exception => e
        nil
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_drive-0.1.0 lib/rails_drive/signin.rb