summaryrefslogtreecommitdiff
path: root/app/controllers/api/sessions_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/api/sessions_controller.rb')
-rw-r--r--app/controllers/api/sessions_controller.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/controllers/api/sessions_controller.rb b/app/controllers/api/sessions_controller.rb
new file mode 100644
index 0000000..9d0e4ac
--- /dev/null
+++ b/app/controllers/api/sessions_controller.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Api
+ # The controller that handles authentications.
+ class SessionsController < ApplicationController
+ def create
+ @user_account = UserAccount.find_by(email: permitted_params[:email])
+
+ unless @user_account&.authenticate(permitted_params[:password])
+ render json: { error_message: 'Credenciales incorrectas' }, status: :unauthorized and return
+ end
+
+ render json: generate_token, status: :ok
+ end
+
+ def destroy
+ user_account.update_attribute(:session_key, nil)
+
+ render status: :no_content
+ end
+
+ private
+
+ def service_params
+ { email: @user_account.email,
+ role: @user_account.role }
+ end
+
+ def permitted_params
+ params.require(:credentials).permit(:email, :password)
+ end
+ end
+end