Class: Aker::Form::Mode
- Inherits:
-
Modes::Base
- Object
- Warden::Strategies::Base
- Modes::Base
- Aker::Form::Mode
- Includes:
- Modes::Support::AttemptedPath, Rack::Utils
- Defined in:
- lib/aker/form/mode.rb
Overview
An interactive mode that accepts a username and password POSTed from an HTML form.
It expects the username in a ‘username` parameter and the unobfuscated password in a `password` parameter.
By default, the form is rendered at and the credentials are received on ‘/login’; this can be overridden in the configuration like so:
Aker.configure {
rack_parameters :login_path => '/log-in-here'
}
This mode also renders said HTML form if authentication fails. Rendering is handled by by Aker::Form::Middleware::LoginRenderer.
Direct Known Subclasses
Class Method Summary collapse
-
.append_middleware(builder) ⇒ Object
Appends the login responder to its position in the Rack middleware stack.
-
.key ⇒ Symbol
A key that refers to this mode; used for configuration convenience.
-
.prepend_middleware(builder) ⇒ Object
Prepends the login form renderer to its position in the Rack middleware stack.
Instance Method Summary collapse
-
#credentials ⇒ Array<String>
Extracts username and password from request parameters.
-
#kind ⇒ Symbol
The type of credentials supplied by this mode.
-
#login_url ⇒ String
The absolute URL for the login form.
-
#on_ui_failure ⇒ Rack::Response
Builds a Rack response that redirects to the login form.
-
#valid? ⇒ Boolean
Returns true if username and password are present, false otherwise.
Methods included from Modes::Support::AttemptedPath
Methods inherited from Modes::Base
#authenticate!, #authority, #configuration, #interactive?, #store?
Methods included from Rack::EnvironmentHelper
#authority, #configuration, #interactive?
Class Method Details
.append_middleware(builder) ⇒ Object
Appends the login responder to its position in the Rack middleware stack.
41 42 43 44 |
# File 'lib/aker/form/mode.rb', line 41 def self.append_middleware(builder) builder.use(Middleware::LoginResponder) builder.use(Middleware::LogoutResponder) end |
.key ⇒ Symbol
A key that refers to this mode; used for configuration convenience.
34 35 36 |
# File 'lib/aker/form/mode.rb', line 34 def self.key :form end |
.prepend_middleware(builder) ⇒ Object
Prepends the login form renderer to its position in the Rack middleware stack.
49 50 51 |
# File 'lib/aker/form/mode.rb', line 49 def self.prepend_middleware(builder) builder.use(Middleware::LoginRenderer) end |
Instance Method Details
#credentials ⇒ Array<String>
Extracts username and password from request parameters.
66 67 68 |
# File 'lib/aker/form/mode.rb', line 66 def credentials [request['username'], request['password']].compact end |
#kind ⇒ Symbol
The type of credentials supplied by this mode.
57 58 59 |
# File 'lib/aker/form/mode.rb', line 57 def kind :user end |
#login_url ⇒ String
The absolute URL for the login form.
80 81 82 83 84 |
# File 'lib/aker/form/mode.rb', line 80 def login_url uri = URI.parse(request.url) uri.path = env['SCRIPT_NAME'] + login_path(configuration) uri.to_s end |
#on_ui_failure ⇒ Rack::Response
Builds a Rack response that redirects to the login form.
90 91 92 93 94 95 96 97 98 |
# File 'lib/aker/form/mode.rb', line 90 def on_ui_failure ::Rack::Response.new do |resp| target = login_url + '?url=' + escape(attempted_path) if env['aker.session_expired'] target += '&session_expired=true' end resp.redirect(target) end end |
#valid? ⇒ Boolean
Returns true if username and password are present, false otherwise.
72 73 74 |
# File 'lib/aker/form/mode.rb', line 72 def valid? credentials.length == 2 end |