settings/security: display page
This commit is contained in:
parent
11e2894621
commit
4d9305f3d2
6 changed files with 123 additions and 4 deletions
|
|
@ -29,10 +29,16 @@ impl UserMenu {
|
|||
label: "Settings",
|
||||
link: uri!(routes::settings::user_settings).to_string(),
|
||||
icon: Icon::Settings.svg,
|
||||
sub: Some(vec![SubItem {
|
||||
sub: Some(vec![
|
||||
SubItem {
|
||||
label: "Personal",
|
||||
link: uri!(routes::settings::personal::user_settings_personal).to_string(),
|
||||
}]),
|
||||
},
|
||||
SubItem {
|
||||
label: "Security",
|
||||
link: uri!(routes::settings::security::user_settings_security).to_string(),
|
||||
},
|
||||
]),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ pub enum Page {
|
|||
AdminAppsNew(AdminAppsNew),
|
||||
AdminAppsView(AdminAppsView),
|
||||
UserPersonalSettings(UserPersonalSettings),
|
||||
UserSecuritySettings(UserSecuritySettings),
|
||||
}
|
||||
|
||||
impl Page {
|
||||
|
|
@ -40,6 +41,7 @@ impl Page {
|
|||
Page::AdminAppsNew(_) => "pages/admin/apps/new",
|
||||
Page::AdminAppsView(_) => "pages/admin/apps/view",
|
||||
Page::UserPersonalSettings(_) => "pages/settings/personal",
|
||||
Page::UserSecuritySettings(_) => "pages/settings/security",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -58,6 +60,7 @@ impl Page {
|
|||
Page::AdminAppsNew(_) => "New application",
|
||||
Page::AdminAppsView(_) => "Application info",
|
||||
Page::UserPersonalSettings(_) => "Personal settings",
|
||||
Page::UserSecuritySettings(_) => "Security settings",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -78,6 +81,7 @@ impl Page {
|
|||
Page::AdminAppsNew(_) => Some(AdminMenu::Apps.into()),
|
||||
Page::AdminAppsView(_) => Some(AdminMenu::Apps.into()),
|
||||
Page::UserPersonalSettings(_) => Some(UserMenu::Settings.into()),
|
||||
Page::UserSecuritySettings(_) => Some(UserMenu::Settings.into()),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -96,6 +100,7 @@ impl Page {
|
|||
Page::AdminAppsNew(new) => Box::new(new),
|
||||
Page::AdminAppsView(view) => Box::new(view),
|
||||
Page::UserPersonalSettings(personal) => Box::new(personal),
|
||||
Page::UserSecuritySettings(security) => Box::new(security),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
use super::prelude::*;
|
||||
use personal::*;
|
||||
use rocket::get;
|
||||
use security::*;
|
||||
|
||||
pub mod personal;
|
||||
pub mod security;
|
||||
|
||||
pub fn routes() -> Vec<Route> {
|
||||
routes![
|
||||
user_settings,
|
||||
user_settings_personal,
|
||||
user_settings_personal_form,
|
||||
user_settings_security,
|
||||
]
|
||||
}
|
||||
|
||||
|
|
@ -30,4 +33,11 @@ pub mod content {
|
|||
pub name: Option<String>,
|
||||
pub email: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(crate = "rocket::serde")]
|
||||
#[derive(Clone)]
|
||||
pub struct UserSecuritySettings {
|
||||
pub user: JwtClaims,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
15
crates/ezidam/src/routes/settings/security.rs
Normal file
15
crates/ezidam/src/routes/settings/security.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
use crate::routes::prelude::*;
|
||||
use rocket::get;
|
||||
|
||||
#[get("/settings/security")]
|
||||
pub async fn user_settings_security(
|
||||
jwt_user: JwtUser,
|
||||
flash: Option<FlashMessage<'_>>,
|
||||
) -> Result<Template> {
|
||||
let page =
|
||||
Page::UserSecuritySettings(super::content::UserSecuritySettings { user: jwt_user.0 });
|
||||
|
||||
Ok(flash
|
||||
.map(|flash| Page::with_flash(page.clone(), flash))
|
||||
.unwrap_or_else(|| page.into()))
|
||||
}
|
||||
|
|
@ -30,6 +30,8 @@
|
|||
<div class="list-group list-group-transparent">
|
||||
<a href="./personal"
|
||||
class="list-group-item list-group-item-action d-flex align-items-center active">Personal</a>
|
||||
<a href="./security"
|
||||
class="list-group-item list-group-item-action d-flex align-items-center">Security</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
81
crates/ezidam/templates/pages/settings/security.html.tera
Normal file
81
crates/ezidam/templates/pages/settings/security.html.tera
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
{% extends "shell" %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Page header -->
|
||||
<div class="page-header d-print-none">
|
||||
<div class="container-xl">
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col">
|
||||
<h2 class="page-title">
|
||||
Settings
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Page body -->
|
||||
<div class="page-body">
|
||||
<div class="container-xl">
|
||||
|
||||
{% if flash %}
|
||||
<div class="alert alert-{{flash.0}}" role="alert">
|
||||
<h4 class="alert-title">{{ flash.1 | safe }}</h4>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="card">
|
||||
<div class="row g-0">
|
||||
<div class="col-3 d-none d-md-block border-end">
|
||||
<div class="card-body">
|
||||
<div class="list-group list-group-transparent">
|
||||
<a href="./personal"
|
||||
class="list-group-item list-group-item-action d-flex align-items-center">Personal</a>
|
||||
<a href="./security"
|
||||
class="list-group-item list-group-item-action d-flex align-items-center active">Security</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex flex-column">
|
||||
<div class="card-body">
|
||||
<h2 class="mb-4">Security</h2>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="mb-4">
|
||||
<h3 class="card-title">Password</h3>
|
||||
<div>
|
||||
<a href="#" class="btn">
|
||||
Set new password
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Paper key -->
|
||||
<div class="mb-4">
|
||||
<h3 class="card-title">Paper key</h3>
|
||||
<p class="card-subtitle">
|
||||
You can use your paper key to reset your password if you forget it.</p>
|
||||
<div>
|
||||
<a href="#" class="btn">
|
||||
Generate new paper key
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Logout everywhere -->
|
||||
<div class="mb-4">
|
||||
<h3 class="card-title">Logout everywhere</h3>
|
||||
<p class="card-subtitle">Logout from every application you signed in with your account.</p>
|
||||
<div>
|
||||
<a href="#" class="btn btn-danger">
|
||||
Logout everywhere
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue