use serde::{Serialize, Deserialize}; use url::Url; use std::collections::HashMap; use crate::Username; #[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] pub struct SSOWatConfig { domains: Vec, permissions: HashMap, portal_domain: String, portal_path: String, redirected_urls: HashMap, theme: String, } impl SSOWatConfig { pub fn permission_for_uri(&self, uri: &Url) -> Option { // First check if the domain is actually managed by SSOWat if let Some(domain) = uri.domain() { if ! self.domains.contains(&domain.to_string()) { // Domain not managed return None; } } else { // No domain (eg. http://8.8.8.8/) return None; } todo!(); } } #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub struct Permission { auth_header: bool, label: String, public: bool, show_tile: bool, uris: Vec, use_remote_user_in_nginx_conf: bool, users: Vec, } #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] pub struct PermissionName { #[serde(flatten)] name: String, }