Sha256: bfcd7cc8463c5680557feac4894ddf9c70764a580c52d910f9147d9dd105c50f

Contents?: true

Size: 1.13 KB

Versions: 9

Compression:

Stored size: 1.13 KB

Contents

module Spontaneous::Rack::Back
  class Login < Base
    include TemplateHelpers

    def set_authentication_cookie(key)
      response.set_cookie(AUTH_COOKIE, {
        :value => key.key_id,
        :path => '/',
        :secure => request.ssl?,
        :httponly => true,
        :expires => (Time.now + SESSION_LIFETIME)
      })
    end

    def unset_authentication_cookie
      response.delete_cookie(AUTH_COOKIE, {
        :path => '/',
        :secure => request.ssl?,
        :httponly => true
      })
    end

    post "/login" do
      login = params[:user][:login]
      password = params[:user][:password]
      origin = "#{NAMESPACE}#{params[:origin]}"
      if key = Spontaneous::Permissions::User.authenticate(login, password, env["REMOTE_ADDR"])
        set_authentication_cookie(key)
        if request.xhr?
          json({
            :key => key.key_id,
            :redirect => origin
          })
        else
          redirect origin, 302
        end
      else
        show_login_page( :login => login, :failed => true )
      end
    end

    delete "/logout" do
      unset_authentication_cookie
      401
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta10 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta9 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta8 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta7 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta6 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta5 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta4 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta3 lib/spontaneous/rack/back/login.rb
spontaneous-0.2.0.beta2 lib/spontaneous/rack/back/login.rb