Add authentication from upstream providers (#107)
All checks were successful
continuous-integration/drone/push Build is passing

Let BasicOIDC delegate authentication to upstream providers (Google, GitHub, GitLab, Keycloak...)

Reviewed-on: #107
This commit is contained in:
2023-04-27 10:10:28 +00:00
parent 4f7c56a4b8
commit 9b18b787a9
39 changed files with 1740 additions and 189 deletions

View File

@ -12,31 +12,29 @@ use crate::data::current_user::CurrentUser;
use crate::data::remote_ip::RemoteIP;
use crate::data::user::User;
pub(crate) struct BaseSettingsPage {
pub(crate) struct BaseSettingsPage<'a> {
pub danger_message: Option<String>,
pub success_message: Option<String>,
pub page_title: &'static str,
pub app_name: &'static str,
pub is_admin: bool,
pub user_name: String,
pub user: &'a User,
pub version: &'static str,
pub ip_location_api: Option<&'static str>,
}
impl BaseSettingsPage {
impl<'a> BaseSettingsPage<'a> {
pub fn get(
page_title: &'static str,
user: &User,
user: &'a User,
danger_message: Option<String>,
success_message: Option<String>,
) -> BaseSettingsPage {
) -> BaseSettingsPage<'a> {
Self {
danger_message,
success_message,
page_title,
app_name: APP_NAME,
is_admin: user.admin,
user_name: user.username.to_string(),
user,
version: env!("CARGO_PKG_VERSION"),
ip_location_api: AppConfig::get().ip_location_service.as_deref(),
}
@ -45,15 +43,14 @@ impl BaseSettingsPage {
#[derive(Template)]
#[template(path = "settings/account_details.html")]
struct AccountDetailsPage {
_p: BaseSettingsPage,
u: User,
struct AccountDetailsPage<'a> {
_p: BaseSettingsPage<'a>,
}
#[derive(Template)]
#[template(path = "settings/change_password.html")]
struct ChangePasswordPage {
_p: BaseSettingsPage,
struct ChangePasswordPage<'a> {
_p: BaseSettingsPage<'a>,
min_pwd_len: usize,
}
@ -63,7 +60,6 @@ pub async fn account_settings_details_route(user: CurrentUser) -> impl Responder
HttpResponse::Ok().body(
AccountDetailsPage {
_p: BaseSettingsPage::get("Account details", &user, None, None),
u: user,
}
.render()
.unwrap(),