Added logout and manage account links redirecting to the oauth provider

This commit is contained in:
Johannes Randerath 2024-08-30 12:44:50 +02:00
parent fe04cf539e
commit 90b7136b8f
2 changed files with 22 additions and 4 deletions

View File

@ -30,7 +30,7 @@ use auth::AuthUser;
use rocket::fs::{FileServer, relative};
use rocket_dyn_templates::{Template, context};
use rocket::response::Redirect;
use rocket::response::{Flash, Redirect};
use inventur_db;
use rocket_sync_db_pools::{database, diesel};
use rocket_oauth2::OAuth2;
@ -38,6 +38,7 @@ use std::env;
use dotenvy::dotenv;
use rocket::Config;
use rocket::figment::providers::Env;
use rocket::http::CookieJar;
/// Database connection using diesel and rocket_sync_db_pools
#[database("inventur")]
@ -66,10 +67,20 @@ async fn home(conn: Db, user: AuthUser) -> Template {
tnames: tnames,
columns: cols,
rows: rows,
username: user.uname,
email: user.email,
}
)
}
#[get("/logout")]
async fn logout(_user: AuthUser, cookies: &CookieJar<'_>) -> Flash<Redirect> {
for cookie in cookies.iter() {
cookies.remove_private(cookie.clone());
}
Flash::success(Redirect::to("https://ldap.randerath.eu/realms/master/protocol/openid-connect/logout"), "Goodbye!")
}
/// If no user is authenticated, redirect the user to authenticate with the oauth identity provider.
#[get("/", rank=2)]
async fn login_home() -> Redirect {
@ -103,7 +114,7 @@ async fn rocket() -> _ {
.attach(Template::fairing())
.attach(Db::fairing())
.attach(OAuth2::<auth::RanderathIdentity>::fairing("oauth"))
.mount("/", routes![auth::oauth_login, auth::oauth_callback, home, login_home, favicon])
.mount("/", routes![auth::oauth_login, auth::oauth_callback, home, login_home, favicon, logout])
.mount("/table", routes![table::table, table::table_sec, table::edit_tname, table::create_table, table::import_table, table::delete_table])
.mount("/row", routes![table::new_entry, table::edit_entry, table::delete_entry])
.mount("/column", routes![table::delete_column, table::edit_column, table::create_column])
@ -112,6 +123,4 @@ async fn rocket() -> _ {
.mount("/css", FileServer::from(relative!("static/css")))
.mount("/js", FileServer::from(relative!("static/js")))
.mount("/txt", FileServer::from(relative!("static/txt")))
}

View File

@ -63,6 +63,15 @@
</a>
</li>
</ul>
<div class="nav-item dropdown">
<a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{ username }}
</a>
<ul class="dropdown-menu dropdown-menu-end px-2">
<li class="dropdown-option"><a class="nav-link" href="https://ldap.randerath.eu/realms/master/account">Account</a></li>
<li class="dropdown-option"><a class="nav-link" href="/logout">Logout</a></li>
</ul>
</div>
</div>
</div>
</nav>