Sha256: 6a6f82b8906f70efc067929b1c5edb403eadbf6f4c7e81fa3df5f6af87d6e3ea
Contents?: true
Size: 1007 Bytes
Versions: 4
Compression:
Stored size: 1007 Bytes
Contents
class ApplicationController < Sinatra::Base # Configure Warden for authentication enable :sessions use Warden::Manager do |config| config.serialize_into_session{|user| user.id} config.serialize_from_session{|id| User.find(id)} config.scope_defaults :default, strategies: [:password], action: 'auth/invalid' config.failure_app = self end Warden::Manager.before_failure {|env,opts| env['REQUEST_METHOD'] = 'POST'} Warden::Strategies.add(:password) do def valid? params['user'] && params['user']['username'] && params['user']['password'] end def authenticate! unless (user = User.find_by_username params['user']['username']) fail! 'The username you entered does not exist' else user.authenticate(params['user']['password']) ? success!(user) : fail!('Could not log in') end end end helpers do def current_user env['warden'].user end def authenticate env['warden'].authenticate! end end end
Version data entries
4 entries across 4 versions & 1 rubygems