summaryrefslogtreecommitdiff
path: root/src/api/auth.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/auth.rs')
-rw-r--r--src/api/auth.rs31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/api/auth.rs b/src/api/auth.rs
index 60ddc80..c48b583 100644
--- a/src/api/auth.rs
+++ b/src/api/auth.rs
@@ -6,7 +6,7 @@ use tower_cookies::{Cookie, Cookies};
use crate::{
public::docs::{EndpointDocumentation, EndpointMethod},
types::{
- extract::{AuthorizedUser, Check, CheckResult, Json, Log},
+ extract::{AuthorizedUser, Check, CheckResult, Database, Json, Log},
http::ResponseCode,
session::Session,
user::User,
@@ -99,13 +99,17 @@ impl Check for RegistrationRequet {
}
}
-async fn register(cookies: Cookies, Json(body): Json<RegistrationRequet>) -> Response {
- let user = match User::new(body) {
+async fn register(
+ cookies: Cookies,
+ Database(db): Database,
+ Json(body): Json<RegistrationRequet>,
+) -> Response {
+ let user = match User::new(&db, body) {
Ok(user) => user,
Err(err) => return err,
};
- let session = match Session::new(user.user_id) {
+ let session = match Session::new(&db, user.user_id) {
Ok(session) => session,
Err(err) => return err,
};
@@ -158,8 +162,12 @@ impl Check for LoginRequest {
}
}
-async fn login(cookies: Cookies, Json(body): Json<LoginRequest>) -> Response {
- let Ok(user) = User::from_email(&body.email) else {
+async fn login(
+ cookies: Cookies,
+ Database(db): Database,
+ Json(body): Json<LoginRequest>,
+) -> Response {
+ let Ok(user) = User::from_email(&db, &body.email) else {
return ResponseCode::BadRequest.text("Email is not registered")
};
@@ -167,7 +175,7 @@ async fn login(cookies: Cookies, Json(body): Json<LoginRequest>) -> Response {
return ResponseCode::BadRequest.text("Password is not correct");
}
- let session = match Session::new(user.user_id) {
+ let session = match Session::new(&db, user.user_id) {
Ok(session) => session,
Err(err) => return err,
};
@@ -199,10 +207,15 @@ pub const AUTH_LOGOUT: EndpointDocumentation = EndpointDocumentation {
cookie: None,
};
-async fn logout(cookies: Cookies, AuthorizedUser(user): AuthorizedUser, _: Log) -> Response {
+async fn logout(
+ cookies: Cookies,
+ AuthorizedUser(user): AuthorizedUser,
+ Database(db): Database,
+ _: Log,
+) -> Response {
cookies.remove(Cookie::new("auth", ""));
- if let Err(err) = Session::delete(user.user_id) {
+ if let Err(err) = Session::delete(&db, user.user_id) {
return err;
}