Module: Lanes::API::Handlers::UserSession

Defined in:
lib/lanes/api/handlers/user_session.rb

Class Method Summary collapse

Class Method Details

.checkObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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

.createObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



8
9
10
11
12
13
# 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