module Padrino::Login
Padrino
authentication module.
@example
class Nifty::Application < Padrino::Application # optional settings set :session_key, "visitor_id" # visitor key name in session storage, defaults to "_login_#{app.app_name}") set :login_model, :visitor # model name for visitor storage, defaults to :account, must be constantizable set :credentials_accessor, :visitor # the name of setter/getter method in helpers, defaults to :credentials enable :login_bypass # enables or disables login bypass in development mode, defaults to disable set :login_url, '/sign/in' # sets the utl to be redirected to if not logged in and in restricted area, defaults to '/login' disable :login_permissions # sets initial login permissions, defaults to { set_access(:*, :allow => :*, :with => :login) } disable :login_controller # disables default login controller to show an example of the custom one # required statement register Padrino::Login # example persistance storage enable :sessions end TODO: example controllers
Public Class Methods
included(base)
click to toggle source
# File lib/padrino-auth/login.rb, line 38 def included(base) base.send(:include, InstanceMethods) end
registered(app)
click to toggle source
# File lib/padrino-auth/login.rb, line 28 def registered(app) warn 'Padrino::Login must be registered before Padrino::Access' if app.respond_to?(:set_access) included(app) setup_storage(app) setup_controller(app) app.before do log_in if authorization_required? end end
Private Class Methods
setup_controller(app)
click to toggle source
# File lib/padrino-auth/login.rb, line 53 def setup_controller(app) app.default(:login_url, '/login') app.default(:login_permissions) { set_access(:*, :allow => :*, :with => :login) } app.default(:login_controller, true) app.controller(:login) { include Controller } if app.login_controller end
setup_storage(app)
click to toggle source
# File lib/padrino-auth/login.rb, line 44 def setup_storage(app) app.default(:session_key, "_login_#{app.app_name}") app.default(:login_model, :account) app.default(:credentials_accessor, :credentials) app.send :attr_reader, app.credentials_accessor unless app.instance_methods.include?(app.credentials_accessor) app.send :attr_writer, app.credentials_accessor unless app.instance_methods.include?(:"#{app.credentials_accessor}=") app.default(:login_bypass, false) end