fistinc_auth/api/controllers/
auth.rs1use actix_web::web;
2use email_address::EmailAddress;
3use fistinc_errors::ApiResult;
4use serde::{Deserialize, Serialize};
5
6use crate::domain::entity::User;
7use crate::domain::services::UserAuthService;
8
9#[derive(Debug, Deserialize)]
10pub struct LoginRequest {
11 email: EmailAddress,
12 password: String,
13}
14
15#[derive(Debug, Serialize)]
16pub struct LoginResponse {
17 token: String,
18 user: User,
19}
20
21pub async fn login(
22 auth_service: web::Data<dyn UserAuthService>,
23 data: web::Json<LoginRequest>,
24) -> ApiResult<web::Json<LoginResponse>> {
25 let (user, token) =
26 auth_service.login(
27 &data.email,
28 &data.password,
29 ).await?;
30 let resp = LoginResponse { user, token };
31 Ok(web::Json(resp))
32}