65 lines
1.7 KiB
Rust
65 lines
1.7 KiB
Rust
// Copyright (C) 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
|
// SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
use actix_web::*;
|
|
|
|
pub use super::{context, Footer, TemplateFile, PAGES, PAYLOAD_KEY, TEMPLATES};
|
|
|
|
pub fn register_templates(t: &mut tera::Tera) {
|
|
for template in [login::LOGIN, join::REGISTER].iter() {
|
|
template.register(t).expect(template.name);
|
|
}
|
|
}
|
|
|
|
pub mod join;
|
|
pub mod login;
|
|
//pub mod sudo;
|
|
|
|
pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
|
|
login::services(cfg);
|
|
join::services(cfg);
|
|
}
|
|
|
|
pub mod routes {
|
|
use actix_auth_middleware::GetLoginRoute;
|
|
use serde::{Deserialize, Serialize};
|
|
use url::Url;
|
|
|
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
|
|
pub struct Auth {
|
|
pub login: &'static str,
|
|
pub join: &'static str,
|
|
}
|
|
|
|
impl GetLoginRoute for Auth {
|
|
fn get_login_route(&self, src: Option<&str>) -> String {
|
|
if let Some(redirect_to) = src {
|
|
let mut url = Url::parse("http://x/").unwrap();
|
|
url.set_path(self.login);
|
|
url.query_pairs_mut()
|
|
.append_pair("redirect_to", redirect_to);
|
|
let path = format!("{}/?{}", url.path(), url.query().unwrap());
|
|
path
|
|
} else {
|
|
self.login.to_string()
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Auth {
|
|
pub const fn new() -> Auth {
|
|
Auth {
|
|
login: "/admin/login",
|
|
join: "/admin/join",
|
|
}
|
|
}
|
|
|
|
pub const fn get_sitemap() -> [&'static str; 2] {
|
|
const AUTH: Auth = Auth::new();
|
|
[AUTH.login, AUTH.join]
|
|
}
|
|
}
|
|
}
|