module Lanes::API::Handlers::UserSession

Public Class Methods

check() click to toggle source
# File lib/lanes/api/handlers/user_session.rb, line 33
def self.check
    lambda do
        wrap_reply do
            user = Lanes::API::AuthenticationProvider.user_for_request(self)
            if user
                { success: true, message: "Login succeeded",
                  data: user.workspace_data.merge(
                      csrf: session[:csrf]
                  )
                }
            else
                { success: true, message: "not logged in", errors: { login: 'none' }, data: {} }
            end
        end
    end
end
create() click to toggle source
# File lib/lanes/api/handlers/user_session.rb, line 16
def self.create
    lambda do
        wrap_reply(with_transaction: false) do
            user = Lanes::User.where(login: data['login']).first
            Lanes.logger.warn "Found User: #{user.id}"

            if user && user.authenticate(data['password'])
                token = JWT.encode({'uid' => user.id}, Lanes.config.session_secret_key_base, 'HS256')
                { success: true, message: "Login succeeded", data: user.workspace_data, token: token }
            else
                { success: false, message: "Login failed", errors: { login: 'failed' }, data: {} }
            end
        end
    end
end
user_for_token(token) click to toggle source
# File lib/lanes/api/handlers/user_session.rb, line 8
def self.user_for_token(token)
    payload = JWT.decode token, Lanes.config.session_secret_key_base, true, { :algorithm => 'HS256' }
    if payload.length && (uid = payload[0]['uid'])
        return Lanes::User.where(id: uid).first
    end
end