All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 10m12s
30 lines
950 B
Rust
30 lines
950 B
Rust
use axum::Json;
|
|
|
|
use crate::controller::model::auth_model::*;
|
|
use crate::db::repository::user_repository;
|
|
use crate::errors::AppError;
|
|
use crate::state::AppState;
|
|
use crate::utils::hash;
|
|
use crate::utils::jwt::generate_access_token;
|
|
|
|
pub async fn login(state: &AppState, req: LoginRequest) -> Result<Json<AuthResponse>, AppError> {
|
|
todo!()
|
|
}
|
|
pub async fn register(
|
|
state: &AppState,
|
|
req: RegisterRequest,
|
|
) -> Result<Json<AuthResponse>, AppError> {
|
|
let mut tx = state.db.begin().await?;
|
|
let user = user_repository::get_user_by_email(&mut *tx, &req.email).await?;
|
|
if user.is_some() {
|
|
// user already registered
|
|
return Err(AppError::Internal);
|
|
}
|
|
let h = hash::hash(&req.password)?;
|
|
let user = user_repository::create_user(&mut *tx, req.email, h).await?;
|
|
let access_token = generate_access_token(user.id, &state.jwt_secret)?;
|
|
|
|
tx.commit().await?;
|
|
todo!("generate jwt and refresh token")
|
|
}
|