Kaynağa Gözat

Create logout route

Lee Morgan 1 ay önce
ebeveyn
işleme
3cf958a956
4 değiştirilmiş dosya ile 24 ekleme ve 0 silme
  1. 9 0
      src/controllers/logout.rs
  2. 1 0
      src/controllers/mod.rs
  3. 2 0
      src/routes.rs
  4. 12 0
      src/users.rs

+ 9 - 0
src/controllers/logout.rs

@@ -0,0 +1,9 @@
+use actix_web::{HttpResponse, get};
+use serde_json::json;
+use crate::users::User;
+
+#[get("/logout")]
+pub async fn route() -> HttpResponse {
+    let cookie = User::remove_auth_cookie();
+    HttpResponse::Ok().cookie(cookie).json(json!({"success": true}))
+}

+ 1 - 0
src/controllers/mod.rs

@@ -1,4 +1,5 @@
 pub mod home;
 pub mod first_admin;
 pub mod login;
+pub mod logout;
 pub mod ws_connect;

+ 2 - 0
src/routes.rs

@@ -3,6 +3,7 @@ use crate::controllers::{
     home,
     first_admin,
     login,
+    logout,
     ws_connect
 };
 
@@ -11,5 +12,6 @@ pub fn config(cfg: &mut ServiceConfig) {
     
     cfg.service(first_admin::route);
     cfg.service(login::route);
+    cfg.service(logout::route);
     cfg.service(ws_connect::route);
 }

+ 12 - 0
src/users.rs

@@ -112,4 +112,16 @@ impl User {
             .max_age(Duration::days(90))
             .finish()
     }
+
+    pub fn remove_auth_cookie() -> Cookie<'static> {
+        let mut cookie = Cookie::build("user", "")
+            .path("/")
+            .http_only(true)
+            .same_site(SameSite::Lax)
+            .secure(true)
+            .finish();
+
+        cookie.make_removal();
+        cookie
+    }
 }