2025-03-19 23:17:50 +07:00
|
|
|
use super::{
|
2025-03-23 01:19:17 +07:00
|
|
|
AuthLoginRequestDto, AuthRefreshTokenRequestDto, AuthRegisterRequestDto,
|
2025-08-11 22:31:51 +07:00
|
|
|
AuthResendOtpRequestDto, AuthVerifyEmailRequestDto,
|
2025-03-19 23:17:50 +07:00
|
|
|
};
|
2025-07-21 21:29:04 +07:00
|
|
|
use crate::{AppState, v1::AuthLoginResponsetDto};
|
2025-03-21 05:36:00 +07:00
|
|
|
use crate::{AuthNewPasswordRequestDto, MessageResponseDto, ResponseSuccessDto};
|
2025-07-21 21:29:04 +07:00
|
|
|
use axum::{Extension, Json, response::IntoResponse};
|
2025-08-11 22:31:51 +07:00
|
|
|
use crate::v1::auth::auth_service::AuthServiceTrait;
|
|
|
|
|
use crate::v1::auth::auth_service::AuthService;
|
2025-03-14 17:50:37 +07:00
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/login",
|
|
|
|
|
request_body = AuthLoginRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Login successful", body = ResponseSuccessDto<AuthLoginResponsetDto>),
|
2025-03-19 23:17:50 +07:00
|
|
|
(status = 401, description = "Login failed", body = MessageResponseDto)
|
2025-03-14 17:50:37 +07:00
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
2025-02-25 02:00:19 +07:00
|
|
|
pub async fn post_login(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthLoginRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
2025-03-14 09:53:20 +07:00
|
|
|
AuthService::mutation_login(payload, &state).await
|
2025-02-08 00:58:54 +07:00
|
|
|
}
|
2025-03-13 23:40:16 +07:00
|
|
|
|
2025-07-21 21:29:04 +07:00
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/login-mentor",
|
|
|
|
|
request_body = AuthLoginRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Mentor login successful", body = ResponseSuccessDto<AuthLoginResponsetDto>),
|
|
|
|
|
(status = 401, description = "Mentor login failed", body = MessageResponseDto),
|
|
|
|
|
(status = 403, description = "Forbidden - Not a mentor", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_login_mentor(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthLoginRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_mentor_login(payload, &state).await
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-14 17:50:37 +07:00
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/register",
|
|
|
|
|
request_body = AuthRegisterRequestDto,
|
|
|
|
|
responses(
|
2025-03-19 23:17:50 +07:00
|
|
|
(status = 200, description = "Register successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "Register failed", body = MessageResponseDto)
|
2025-03-14 17:50:37 +07:00
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
2025-03-13 23:40:16 +07:00
|
|
|
pub async fn post_register(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthRegisterRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
2025-03-14 09:53:20 +07:00
|
|
|
AuthService::mutation_register(payload, &state).await
|
2025-03-13 23:40:16 +07:00
|
|
|
}
|
2025-03-19 23:17:50 +07:00
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
2025-03-23 01:19:17 +07:00
|
|
|
path = "/v1/auth/verify-email",
|
2025-03-19 23:17:50 +07:00
|
|
|
request_body = AuthVerifyEmailRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Verify email successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "Verify email failed", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_verify_email(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthVerifyEmailRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_verify_email(payload, &state).await
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
2025-03-23 01:19:17 +07:00
|
|
|
path = "/v1/auth/send-otp",
|
2025-03-19 23:17:50 +07:00
|
|
|
request_body = AuthResendOtpRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Resend otp successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "Resend otp failed", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_resend_otp(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthResendOtpRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_resend_otp(payload, &state).await
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/forgot",
|
|
|
|
|
request_body = AuthResendOtpRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Forgot password request successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "Forgot password request failed", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_forgot_password(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthResendOtpRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_forgot_password(payload, &state).await
|
|
|
|
|
}
|
2025-03-21 05:36:00 +07:00
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/new-password",
|
|
|
|
|
request_body = AuthNewPasswordRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "New password request successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "New password request failed", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_new_password(
|
|
|
|
|
Extension(state): Extension<AppState>,
|
|
|
|
|
Json(payload): Json<AuthNewPasswordRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_new_password(payload, &state).await
|
|
|
|
|
}
|
2025-03-23 01:19:17 +07:00
|
|
|
|
|
|
|
|
#[utoipa::path(
|
|
|
|
|
post,
|
|
|
|
|
path = "/v1/auth/refresh",
|
|
|
|
|
request_body = AuthRefreshTokenRequestDto,
|
|
|
|
|
responses(
|
|
|
|
|
(status = 200, description = "Refresh token request successful", body = MessageResponseDto),
|
|
|
|
|
(status = 401, description = "Refresh token request failed", body = MessageResponseDto)
|
|
|
|
|
),
|
|
|
|
|
tag = "Authentication"
|
|
|
|
|
)]
|
|
|
|
|
pub async fn post_refresh_token(
|
|
|
|
|
Json(payload): Json<AuthRefreshTokenRequestDto>,
|
|
|
|
|
) -> impl IntoResponse {
|
|
|
|
|
AuthService::mutation_refresh_token(payload).await
|
|
|
|
|
}
|