|
@@ -4,7 +4,7 @@ module Gql::Mutations
|
|
|
class Login < BaseMutation
|
|
|
description 'Performs a user login to create a session'
|
|
|
|
|
|
- field :session_id, String, null: false, description: 'The current session'
|
|
|
+ field :session_id, String, description: 'The current session'
|
|
|
|
|
|
argument :login, String, required: true, description: 'User name'
|
|
|
argument :password, String, required: true, description: 'Password'
|
|
@@ -14,31 +14,31 @@ module Gql::Mutations
|
|
|
def resolve(...)
|
|
|
|
|
|
# Register user for subsequent auth checks.
|
|
|
- context[:current_user] = authenticate(...)
|
|
|
+ authenticate(...)
|
|
|
|
|
|
- {
|
|
|
- session_id: context[:controller].session.id
|
|
|
- }
|
|
|
+ if !context[:current_user]
|
|
|
+ return error_response(__('Wrong login or password combination.'))
|
|
|
+ end
|
|
|
+
|
|
|
+ { session_id: context[:controller].session.id }
|
|
|
end
|
|
|
|
|
|
private
|
|
|
|
|
|
def authenticate(login:, password:, fingerprint:) # rubocop:disable Metrics/AbcSize
|
|
|
auth = Auth.new(login, password)
|
|
|
- user = auth&.user
|
|
|
-
|
|
|
if !auth.valid?
|
|
|
- raise __('Wrong login or password combination.')
|
|
|
+ return
|
|
|
end
|
|
|
|
|
|
+ user = auth&.user
|
|
|
context[:controller].session.delete(:switched_from_user_id)
|
|
|
|
|
|
# Fingerprint param is expected for session logins.
|
|
|
context[:controller].params[:fingerprint] = fingerprint
|
|
|
# authentication_check_prerequesits is private
|
|
|
context[:controller].send(:authentication_check_prerequesits, user, 'session', {})
|
|
|
-
|
|
|
- user
|
|
|
+ context[:current_user] = user
|
|
|
end
|
|
|
end
|
|
|
end
|