refactor(auth): LoginDeps, RegisterDeps, RefreshDeps, RegisterAndLoginDeps, RefreshSessionCleanupJob
This commit is contained in:
@@ -7,7 +7,11 @@ use axum::{
|
||||
use chrono::Utc;
|
||||
|
||||
use application::auth::{
|
||||
commands::RegisterCommand, login as login_uc, queries::LoginQuery, register as register_uc,
|
||||
commands::RegisterCommand,
|
||||
deps::{LoginDeps, RefreshDeps, RegisterAndLoginDeps, RegisterDeps},
|
||||
login as login_uc,
|
||||
queries::LoginQuery,
|
||||
register as register_uc,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
@@ -60,8 +64,15 @@ pub async fn login(
|
||||
State(state): State<AppState>,
|
||||
Json(req): Json<LoginRequest>,
|
||||
) -> Result<Json<LoginResponse>, ApiError> {
|
||||
let deps = LoginDeps {
|
||||
user: state.app_ctx.repos.user.clone(),
|
||||
password_hasher: state.app_ctx.services.password_hasher.clone(),
|
||||
auth: state.app_ctx.services.auth.clone(),
|
||||
refresh_session: state.app_ctx.repos.refresh_session.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
let result = login_uc::execute(
|
||||
&state.app_ctx,
|
||||
&deps,
|
||||
LoginQuery {
|
||||
email: req.email,
|
||||
password: req.password,
|
||||
@@ -90,8 +101,13 @@ pub async fn register(
|
||||
State(state): State<AppState>,
|
||||
Json(req): Json<RegisterRequest>,
|
||||
) -> Result<StatusCode, ApiError> {
|
||||
let deps = RegisterDeps {
|
||||
user: state.app_ctx.repos.user.clone(),
|
||||
password_hasher: state.app_ctx.services.password_hasher.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
register_uc::execute(
|
||||
&state.app_ctx,
|
||||
&deps,
|
||||
RegisterCommand {
|
||||
email: req.email,
|
||||
username: req.username,
|
||||
@@ -115,7 +131,12 @@ pub async fn refresh(
|
||||
State(state): State<AppState>,
|
||||
Json(req): Json<RefreshRequest>,
|
||||
) -> Result<Json<RefreshResponse>, ApiError> {
|
||||
let result = application::auth::refresh::execute(&state.app_ctx, &req.refresh_token).await?;
|
||||
let deps = RefreshDeps {
|
||||
refresh_session: state.app_ctx.repos.refresh_session.clone(),
|
||||
auth: state.app_ctx.services.auth.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
let result = application::auth::refresh::execute(&deps, &req.refresh_token).await?;
|
||||
Ok(Json(RefreshResponse {
|
||||
token: result.token,
|
||||
refresh_token: result.refresh_token,
|
||||
@@ -134,7 +155,11 @@ pub async fn api_logout(
|
||||
State(state): State<AppState>,
|
||||
Json(req): Json<LogoutRequest>,
|
||||
) -> StatusCode {
|
||||
let _ = application::auth::logout::execute(&state.app_ctx, &req.refresh_token).await;
|
||||
let _ = application::auth::logout::execute(
|
||||
state.app_ctx.repos.refresh_session.clone(),
|
||||
&req.refresh_token,
|
||||
)
|
||||
.await;
|
||||
StatusCode::NO_CONTENT
|
||||
}
|
||||
|
||||
@@ -170,8 +195,15 @@ pub async fn post_login(
|
||||
if crate::csrf::mismatch(&csrf, &form.csrf_token) {
|
||||
return StatusCode::FORBIDDEN.into_response();
|
||||
}
|
||||
let deps = LoginDeps {
|
||||
user: state.app_ctx.repos.user.clone(),
|
||||
password_hasher: state.app_ctx.services.password_hasher.clone(),
|
||||
auth: state.app_ctx.services.auth.clone(),
|
||||
refresh_session: state.app_ctx.repos.refresh_session.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
match login_uc::execute(
|
||||
&state.app_ctx,
|
||||
&deps,
|
||||
LoginQuery {
|
||||
email: form.email,
|
||||
password: form.password,
|
||||
@@ -237,8 +269,15 @@ pub async fn post_register(
|
||||
if crate::csrf::mismatch(&csrf, &form.csrf_token) {
|
||||
return StatusCode::FORBIDDEN.into_response();
|
||||
}
|
||||
let deps = RegisterAndLoginDeps {
|
||||
user: state.app_ctx.repos.user.clone(),
|
||||
password_hasher: state.app_ctx.services.password_hasher.clone(),
|
||||
auth: state.app_ctx.services.auth.clone(),
|
||||
refresh_session: state.app_ctx.repos.refresh_session.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
match application::auth::register_and_login::execute(
|
||||
&state.app_ctx,
|
||||
&deps,
|
||||
application::auth::commands::RegisterAndLoginCommand {
|
||||
email: form.email,
|
||||
username: form.username,
|
||||
|
||||
Reference in New Issue
Block a user