Module: Lanes::API::Handlers::UserSession
- Defined in:
- lib/lanes/api/handlers/user_session.rb
Class Method Summary collapse
Class Method Details
.check ⇒ Object
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 |
.create ⇒ Object
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 |