Class: SSO::Server::Doorkeeper::ResourceOwnerAuthenticator

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/sso/server/doorkeeper/resource_owner_authenticator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#debug, #error, #fatal, #info, #logger, #progname, #warn

Constructor Details

#initialize(controller:) ⇒ ResourceOwnerAuthenticator

Returns a new instance of ResourceOwnerAuthenticator.



13
14
15
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 13

def initialize(controller:)
  @controller = controller
end

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller.



7
8
9
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 7

def controller
  @controller
end

Class Method Details

.to_procObject



9
10
11
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 9

def self.to_proc
  proc { ::SSO::Server::Doorkeeper::ResourceOwnerAuthenticator.new(controller: self).call }
end

Instance Method Details

#callObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 17

def call
  debug { 'Detected "Authorization Code Grant" flow. Checking resource owner authentication...' }

  unless warden
    fail ::SSO::Server::Errors::WardenMissing, 'Please use the Warden middleware.'
  end

  if current_user
    debug { "Yes, User with ID #{current_user.inspect} has a session." }
    current_user
  else
    debug { 'No, no User is logged in right now. Initializing authentication procedure...' }
    warden.authenticate! :password
  end
end

#current_userObject



37
38
39
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 37

def current_user
  warden.user
end

#wardenObject



33
34
35
# File 'lib/sso/server/doorkeeper/resource_owner_authenticator.rb', line 33

def warden
  controller.request.env['warden']
end