Module: Graphql::AuthHelper

Includes:
AccountLockHelper, TokenHelper
Defined in:
app/helpers/graphql/auth_helper.rb

Instance Method Summary collapse

Methods included from TokenHelper

#delete_refresh_token, #generate_access_token, #set_current_user, #set_refresh_token

Methods included from AccountLockHelper

#account_locked?

Instance Method Details

#contextObject



10
11
12
13
14
15
# File 'app/helpers/graphql/auth_helper.rb', line 10

def context
  {
    current_user: current_user,
    response: response
  }
end

#current_userObject

set current user from Authorization header



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/helpers/graphql/auth_helper.rb', line 18

def current_user
  authorization_token = request.headers['Authorization']
  return nil if authorization_token.nil?

  decrypted_token = GraphQL::Auth::JwtManager.decode(authorization_token)
  user = User.find_by id: decrypted_token['user']
  return nil if user.blank? || (user)

  # update token if user is found with token
  generate_access_token(user, response)

  user

# rescue expired Authorization header with RefreshToken header
rescue JWT::ExpiredSignature
  refresh_token = request.headers['RefreshToken']
  return nil if refresh_token.nil?

  user = User.find_by refresh_token: refresh_token
  return nil if user.blank? || (user)

  generate_access_token(user, response)
  set_refresh_token(user, response)

  user
end