Class: Services::Devise::SignIn

Inherits:
ApiMaker::BaseService
  • Object
show all
Includes:
Devise::Controllers::Rememberable
Defined in:
app/api_maker/services/devise/sign_in.rb

Instance Method Summary collapse

Instance Method Details

#check_model_existsObject



26
27
28
29
# File 'app/api_maker/services/devise/sign_in.rb', line 26

def check_model_exists
  error_msg = I18n.t("devise.failure.not_found_in_database", authentication_keys: model_class.authentication_keys.join(", "))
  fail! error_msg, type: :not_found_in_database unless model
end

#check_serializer_existsObject



31
32
33
# File 'app/api_maker/services/devise/sign_in.rb', line 31

def check_serializer_exists
  fail! "Serializer doesn't exist for #{scope}", type: :serializer_doesnt_exist unless resource
end

#cookiesObject

Rememberable needs this



5
6
7
# File 'app/api_maker/services/devise/sign_in.rb', line 5

def cookies
  controller.__send__(:cookies)
end

#inactive_messageObject



35
36
37
38
39
# File 'app/api_maker/services/devise/sign_in.rb', line 35

def inactive_message
  message = model.inactive_message
  message = I18n.t("devise.failure.#{message}") if message.is_a?(Symbol)
  message
end

#invalid_error_messageObject



41
42
43
# File 'app/api_maker/services/devise/sign_in.rb', line 41

def invalid_error_message
  I18n.t("devise.failure.invalid", authentication_keys: model_class.authentication_keys.join(", "))
end

#modelObject



45
46
47
# File 'app/api_maker/services/devise/sign_in.rb', line 45

def model
  @model ||= model_class.find_for_authentication(email: args[:username])
end

#model_classObject



49
50
51
# File 'app/api_maker/services/devise/sign_in.rb', line 49

def model_class
  @model_class ||= scope.camelize.safe_constantize
end

#performObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/api_maker/services/devise/sign_in.rb', line 9

def perform
  fail! "Devise sign in isn't enabled", type: :devise_sign_in_isnt_enabled unless ApiMaker::Configuration.current.

  check_model_exists
  check_serializer_exists

  if !model.active_for_authentication?
    fail! inactive_message, type: :inactive
  elsif model.valid_password?(args[:password])
    controller.(model, scope: scope)
    remember_me(model) if args.dig(:args, :rememberMe)
    succeed!(model_data: serializer.result)
  else
    fail! invalid_error_message, type: :invalid
  end
end

#resourceObject



57
58
59
# File 'app/api_maker/services/devise/sign_in.rb', line 57

def resource
  @resource ||= ApiMaker::Serializer.resource_for(model.class)
end

#scopeObject



53
54
55
# File 'app/api_maker/services/devise/sign_in.rb', line 53

def scope
  @scope ||= args.dig(:args, :scope).presence || "user"
end

#serializerObject



61
62
63
# File 'app/api_maker/services/devise/sign_in.rb', line 61

def serializer
  @serializer ||= ApiMaker::Serializer.new(ability: current_ability, api_maker_args: api_maker_args, model: model)
end