/
ArtSerg
/
IntegrationProject
Обзор
Документация
Войти
/
ArtSerg
/
IntegrationProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab3
app/controllers/api/sessions_controller.rb
54 строки
2 KB
Yuriy
idempotent
20 сен 2025, 09:45
20 сен 2025, 09:45
c00c948
Код
Авторство
О чём код?
module Api class SessionsController < ApplicationController skip_before_action :authorize!, only: [:create] def create user = User.find_by(email: login_params[:email]) if user&.authenticate(login_params[:password]) token = JwtService.encode(user_id: user.id) session = SessionResource.build(session_params(token, 'Successful authenticate!')) session.save render jsonapi: session, status: 201 else render json: authenticate_error, status: :unauthorized end end def destroy session = SessionResource.all(filter: { token: request.headers['Authorization'].split(' ').last }).data.first session.destroy render jsonapi: session_params(nil, 'Logout!'), status: :ok end private def login_params params.require(:data).require(:attributes).permit(:email, :password) end def authenticate_error { "errors": [ { "status": "401", "title": "Unauthorized", "detail": "Authentication failed" } ] } end def session_params(token, message) { data: { type: 'sessions', attributes: { token: token, message: message } } } end end end