Sha256: 485d8c027994a5001633644f27cc23c73b3269038d2421c20bdbc133cf881a83
Contents?: true
Size: 1.52 KB
Versions: 6
Compression:
Stored size: 1.52 KB
Contents
require 'spontaneous/rack/back/base' require 'spontaneous/rack/back/helpers' module Spontaneous::Rack::Middleware module Authenticate class Init include Spontaneous::Rack::Constants def initialize(app, site) @app, @site = app, site end def call(env) if (key = authenticate(env)) env[ACTIVE_KEY] = key env[ACTIVE_USER] = key.user end @app.call(env) end def authenticate(env) remote_addr = env["REMOTE_ADDR"] if (login = @site.config.auto_login) auto_login(login, remote_addr) else cookie_login(env, remote_addr) end end def auto_login(login, remote_addr) user = Spontaneous::Permissions::User.login(login) if user.access_keys.empty? user.generate_access_key(remote_addr) else user.access_keys.first end end def cookie_login(env, remote_addr) request = ::Rack::Request.new(env) key_id = request.cookies[AUTH_COOKIE] return nil unless key_id key = Spontaneous::Permissions::AccessKey.authenticate(key_id, remote_addr) return nil unless key key end end class Edit < Spontaneous::Rack::Back::Base include Spontaneous::Rack::Back::TemplateHelpers before do show_login_page unless user end end class Preview < Spontaneous::Rack::Back::Base before do redirect NAMESPACE, 302 unless user end end end end
Version data entries
6 entries across 6 versions & 1 rubygems