mcaptcha/pages/auth/
mod.rs

1// Copyright (C) 2022  Aravinth Manivannan <realaravinth@batsense.net>
2// SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
3//
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6pub mod login;
7pub mod register;
8pub mod sudo;
9
10pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
11    cfg.service(login::login);
12    cfg.service(register::join);
13}
14
15pub mod routes {
16    use actix_auth_middleware::GetLoginRoute;
17
18    pub struct Auth {
19        pub login: &'static str,
20        pub join: &'static str,
21    }
22    impl Auth {
23        pub const fn new() -> Auth {
24            Auth {
25                login: "/login",
26                join: "/join",
27            }
28        }
29
30        pub const fn get_sitemap() -> [&'static str; 2] {
31            const AUTH: Auth = Auth::new();
32            [AUTH.login, AUTH.join]
33        }
34    }
35
36    impl GetLoginRoute for Auth {
37        fn get_login_route(&self, src: Option<&str>) -> String {
38            if let Some(redirect_to) = src {
39                format!(
40                    "{}?redirect_to={}",
41                    self.login,
42                    urlencoding::encode(redirect_to)
43                )
44            } else {
45                self.login.to_string()
46            }
47        }
48    }
49}