Module: Graphql::AuthHelper

Includes:
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

Instance Method Details

#contextObject



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

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

#current_userObject

set current user from Authorization header



17
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
# File 'app/helpers/graphql/auth_helper.rb', line 17

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.access_locked?

  # 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.access_locked?

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

  user
end