Repository URL to install this package:
|
Version:
0.3.0 ▾
|
require 'devise/models'
require 'devise_unikey_api_authenticatable/strategy'
require 'devise_unikey_api_authenticatable/session_serializer'
require 'unikey/api/core'
module Devise
module Models
module UnikeyApiAuthenticatable
def self.included(base)
base.class_eval do
extend ClassMethods
end
end
module ClassMethods
def authenticate_with_api(attributes={})
user = Devise.unikey_user_model_klass.authenticate!(attributes[:email], attributes[:password])
success = !user.errors? && !user.authentication.errors? && check_additional_auth_rules(user)
if success
return new(user)
else
return nil
end
end
def serialize_into_session(record)
DeviseUnikeyApiAuthenticatable::SessionSerializer.serialize_into_session api_sdk, record
end
def serialize_from_session(id, api_auth)
config = DeviseUnikeyApiAuthenticatable::SessionSerializer.serialize_from_session api_sdk, id, api_auth
new config
end
private
def api_sdk
Devise.unikey_api_sdk
end
def check_additional_auth_rules(user)
return true if Devise.unikey_authentication_rules.empty?
Devise.unikey_authentication_rules.all? {|rule| rule.call(user) }
end
end
end
end
end