class CompositionEngine::LoginHandler
Attributes
env[RW]
Public Class Methods
force_login(_env)
click to toggle source
# File lib/composition_engine.rb, line 64 def self.force_login(_env) inst = self.new(_env) if inst.logged_in? false else inst.new_login end end
handle(_env)
click to toggle source
# File lib/composition_engine.rb, line 60 def self.handle(_env) self.new(_env).handle end
new(_env)
click to toggle source
# File lib/composition_engine.rb, line 81 def initialize(_env) self.env = _env end
prefixed_path()
click to toggle source
# File lib/composition_engine.rb, line 77 def self.prefixed_path PATH_PREFIX+self.resource_path end
resource_path()
click to toggle source
# File lib/composition_engine.rb, line 73 def self.resource_path '/login' end
Public Instance Methods
create_login()
click to toggle source
# File lib/composition_engine.rb, line 110 def create_login nickname = params['login']['nickname'] if nickname.nil? || nickname.empty? new_login("Nickname must not be blank!") else user = ::CompositionEngine::User.new(:nickname => nickname, :uuid => UUIDTools::UUID.random_create) ::CompositionEngine.assign_user_to_session(session,user) [302,{'Location'=>'/'},[]] end end
handle()
click to toggle source
# File lib/composition_engine.rb, line 85 def handle if request.get? new_login elsif request.post? create_login end end
logged_in?()
click to toggle source
# File lib/composition_engine.rb, line 121 def logged_in? ::CompositionEngine.extract_user_from_session(session) end
new_login(message = nil)
click to toggle source
# File lib/composition_engine.rb, line 93 def new_login(message = nil) #TODO: require form key so they can't spam POSTs body = <<HTML <html> <body> <h1>New User!</h1> #{"<em>#{message}</em>" if message} <p>Select a handle and click Login</p> <form action='#{self.class.prefixed_path}' method='POST'> <label for='login_nickname'>Nickname: </label><input type='text' name='login[nickname]' id='login_nickname'/> <input type='submit' value='Login' /> </form> </body> </html> HTML [200,{'ContentType' => 'text/html'},[body]] end
Private Instance Methods
params()
click to toggle source
# File lib/composition_engine.rb, line 135 def params request.params end
request()
click to toggle source
# File lib/composition_engine.rb, line 139 def request @_rack_request||= Rack::Request.new(env) end
scoped_session()
click to toggle source
# File lib/composition_engine.rb, line 127 def scoped_session ::CompositionEngine.scope_session(session) end
session()
click to toggle source
# File lib/composition_engine.rb, line 131 def session request.session end