/
mxtn
/
webapi
Обзор
Документация
Войти
/
mxtn
/
webapi
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/user.rs
51 строка
2 KB
Max Talbushkin
First commit
10 июл 2025, 15:09
10 июл 2025, 15:09
cfeaa95
Код
Авторство
О чём код?
use actix_web::{post, put, web, HttpMessage, HttpRequest, HttpResponse}; use crate::errors::AppError; use crate::models::user::{LoginRequest, UserCreate, UserUpdate}; use crate::services::UserService; use crate::repositories::UserRepo; // Обработчик для создания нового пользователя #[post("/users")] pub async fn create_user( pool: web::Data<sqlx::PgPool>, jwt_secret: web::Data<String>, req: web::Json<UserCreate>, ) -> Result<HttpResponse, AppError> { let repo = UserRepo::new(pool.as_ref().clone()); let service = UserService::new(repo, jwt_secret.as_ref().to_string()); let id = service.create_user(req.into_inner()).await?; Ok(HttpResponse::Ok().json(id)) } // Обработчик для авторизации пользователя #[post("/login")] pub async fn login_user( pool: web::Data<sqlx::PgPool>, jwt_secret: web::Data<String>, req: web::Json<LoginRequest>, ) -> Result<HttpResponse, AppError> { let repo = UserRepo::new(pool.as_ref().clone()); let service = UserService::new(repo, jwt_secret.as_ref().to_string()); let token = service.login(req.into_inner()).await?; Ok(HttpResponse::Ok().json(token)) } // Обработчик для обновления данных пользователя #[put("/users")] pub async fn update_user( req: HttpRequest, pool: web::Data<sqlx::PgPool>, jwt_secret: web::Data<String>, update: web::Json<UserUpdate>, ) -> Result<HttpResponse, AppError> { // Извлекаем user_id из расширений запроса, добавленного middleware let user_id = req .extensions() .get::<i64>() .copied() .ok_or(AppError::AuthError)?; let repo = UserRepo::new(pool.as_ref().clone()); let service = UserService::new(repo, jwt_secret.as_ref().to_string()); service.update_user(user_id, update.into_inner()).await?; Ok(HttpResponse::Ok().finish()) }