Sha256: 18b495281df4eedbe94132f8aeb7cb4b0363c66b0282d5ae8054a2c91b002bcb

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

module ForestLiana
  class SessionsController < ActionController::Base

    def create
      fetch_allowed_users
      user = check_user
      token = encode_token(user) if user

      if token
        render json: { token: token }
      else
        render nothing: true, status: 401
      end
    end

    private

    def fetch_allowed_users
      AllowedUsersGetter.new.perform
    end

    def check_user
      ForestLiana.allowed_users.find do |allowed_user|
        allowed_user['email'] == params['email'] &&
          allowed_user['outlines'].include?(params['outlineId']) &&
          BCrypt::Password.new(allowed_user['password']) == params['password']
      end
    end

    def encode_token(user)
      JWT.encode({
        exp: Time.now.to_i + 2.weeks.to_i,
        data: {
          id: user['id'],
          type: 'users',
          data: {
            email: user['email'],
            first_name: user['first_name'],
            last_name: user['last_name']
          },
          relationships: {
            outlines: {
              data: [{
                type: 'outlines',
                id: params['outlineId']
              }]
            }
          }
        }
      } , ForestLiana.auth_key, 'HS256')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
forest_liana-1.3.2 app/controllers/forest_liana/sessions_controller.rb
forest_liana-1.3.1 app/controllers/forest_liana/sessions_controller.rb
forest_liana-1.3.0 app/controllers/forest_liana/sessions_controller.rb
forest_liana-1.2.6 app/controllers/forest_liana/sessions_controller.rb