Module: UserAuthHelper

Included in:
Cxf::AdminBaseController, Cxf::BaseApiController
Defined in:
lib/cxf/helpers/user_auth_helper.rb

Instance Method Summary collapse

Instance Method Details

#cxf_user_login(email, password) ⇒ Object

Cxf user Login.

Starts a user session in cxf.cloud and set a session cookie

[View source]

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/cxf/helpers/user_auth_helper.rb', line 22

def (email, password)
  # Login in cxf
  response = @cxf_user.(email, password)
  # Get session token from response
  return response unless response.is_a? Hash
  if response.key? 'data'
    session_token = response['data']['access_token']
    refresh_token = response['data']['refresh_token']
    # session_token_expires_at = Time.parse(response['data']['access_token_expires_at'])
    # refresh_token_expires_at = Time.parse(response['data']['refresh_token_expires_at'])
  end

  # Set a permanent cookie with the session token
  cookies["cxf_user_session_token"] = { value: session_token, secure: true, httponly: true }
  cookies["cxf_user_refresh_token"] = { value: refresh_token, secure: true, httponly: true}
end

#cxf_user_logoutObject

Cxf user Logout.

Destroy session from cxf.cloud and delete local session cookie

[View source]

58
59
60
61
62
63
64
# File 'lib/cxf/helpers/user_auth_helper.rb', line 58

def cxf_user_logout
  # Logout from cxf
  # @cxf_user.logout
  # Delete local cookie
  cookies.delete("cxf_user_session_token")
  cookies.delete("cxf_user_refresh_token")
end

Cxf user Login.

Starts a user session in cxf.cloud and set a session cookie

[View source]

42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/cxf/helpers/user_auth_helper.rb', line 42

def (hash)
  # Login in cxf
  response = @cxf_user.(hash)
  if response['data']
    # Set a cookie with the session token
    cookies["cxf_user_session_token"] = { value: response['data']['access_token'], secure: true, httponly: true }
    cookies["cxf_user_refresh_token"] = { value: response['data']['refresh_token'], secure: true, httponly: true }
    redirect_to response['data']['redirect_url'] || '/'
  else
    redirect_to '/'
  end
end

#cxf_user_signed_in?Boolean

Returns:

  • (Boolean)
[View source]

4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/cxf/helpers/user_auth_helper.rb', line 4

def cxf_user_signed_in?
  begin
    # Check status in cxf
    response = @cxf_user.me['data']
  rescue => e
    # Handle the client Unauthorized error
    # if cxf response is negative delete the session cookie
    cookies.delete("cxf_user_session_token")
    cookies.delete("cxf_user_refresh_token")
    response = nil
  end

  response
end

#update_user_tokensObject

[View source]

66
67
68
69
70
71
72
# File 'lib/cxf/helpers/user_auth_helper.rb', line 66

def update_user_tokens
  access_token = @cxf_user.get_client.session_token
  refresh_token = @cxf_user.get_client.refresh_token

  cookies["cxf_user_session_token"] = { value: access_token, secure: true, httponly: true} if access_token
  cookies["cxf_user_refresh_token"] = { value: refresh_token, secure: true, httponly: true} if refresh_token
end