From f891d2f940d566749449f9387e0bbd0cee8a298d Mon Sep 17 00:00:00 2001 From: Philippe Loctaux
Date: Mon, 1 May 2023 11:48:57 +0200
Subject: [PATCH] updated api to create totp struct, get totp secret directly
if it exists
---
crates/ezidam/src/routes/settings/security.rs | 16 ++++++++++------
crates/totp/src/lib.rs | 13 ++-----------
crates/users/src/database.rs | 5 ++++-
crates/users/src/lib.rs | 4 ++--
4 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/crates/ezidam/src/routes/settings/security.rs b/crates/ezidam/src/routes/settings/security.rs
index ff60de5..5564121 100644
--- a/crates/ezidam/src/routes/settings/security.rs
+++ b/crates/ezidam/src/routes/settings/security.rs
@@ -34,7 +34,7 @@ pub async fn user_settings_security(
let page = Page::UserSecuritySettings(super::content::UserSecuritySettings {
user: jwt_user.0,
logout_time_effective: JWT_DURATION_MINUTES,
- totp_enabled: user.is_totp_enabled(),
+ totp_enabled: user.totp_secret().is_some(),
});
Ok(flash
@@ -261,7 +261,7 @@ pub async fn user_settings_security_totp(
let totp = totp::new(
totp::secret_to_bytes(&secret)?,
- issuer,
+ Some(issuer),
jwt_user.0.username.to_string(),
)?;
@@ -305,7 +305,7 @@ pub async fn user_settings_security_totp_form(
// Get settings
let settings = Settings::get(&mut transaction).await?;
- // Get issuer
+ // Get totp issuer
let issuer = settings
.url()
.map(Url::parse)
@@ -316,7 +316,7 @@ pub async fn user_settings_security_totp_form(
transaction.commit().await?;
if disable {
- return match user.is_totp_enabled() {
+ return match user.totp_secret().is_some() {
true => {
// Delete secret and backup
let mut transaction = db.begin().await?;
@@ -340,7 +340,7 @@ pub async fn user_settings_security_totp_form(
};
}
- if enable && user.is_totp_enabled() {
+ if enable && user.totp_secret().is_some() {
return Ok(Flash::new(
Redirect::to(uri!(user_settings_security)),
FlashKind::Warning,
@@ -355,7 +355,11 @@ pub async fn user_settings_security_totp_form(
let totp_secret = totp::secret_to_bytes(&secret)?;
- let totp = totp::new(totp_secret.clone(), issuer, user.username().to_string())?;
+ let totp = totp::new(
+ totp_secret.clone(),
+ Some(issuer),
+ user.username().to_string(),
+ )?;
if let Some(token) = form.token {
return if totp.check_current(token)? {
diff --git a/crates/totp/src/lib.rs b/crates/totp/src/lib.rs
index df023cb..92f721e 100644
--- a/crates/totp/src/lib.rs
+++ b/crates/totp/src/lib.rs
@@ -14,17 +14,8 @@ pub enum Error {
Secret(String),
}
-pub fn new(secret: Vec