class RailsDrive::Signin

Public Class Methods

new(id_token_string) click to toggle source
# File lib/rails_drive/signin.rb, line 11
def initialize(id_token_string)
  @id_token = id_token_verifier(id_token_string)
end

Public Instance Methods

create_or_get_user() click to toggle source
# File lib/rails_drive/signin.rb, line 15
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 Instance Methods

id_token_verifier(id_token_string) click to toggle source
# File lib/rails_drive/signin.rb, line 28
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