/* ** Copyright (C) 2021 KunoiSayami ** ** This file is part of cgit-simple-authentication and is released under ** the AGPL v3 License: https://www.gnu.org/licenses/agpl-3.0.txt ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU Affero General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU Affero General Public License for more details. ** ** You should have received a copy of the GNU Affero General Public License ** along with this program. If not, see . */ use sha2::Digest; use anyhow::Result; #[derive(Debug, Clone, Default)] pub struct Config { } impl Config { pub fn new() -> Self { Self {} } } #[derive(Debug, Clone, Default)] pub struct FormData { user: String, password: String, hash: String, } impl FormData { pub fn new() -> Self { Self { ..Default::default()} } pub fn set_password(&mut self, password: String) { self.password = password; self.hash = Default::default(); } pub fn set_user(&mut self, user: String) { self.user = user } pub fn get_user(&self) -> &String { &self.user } pub fn get_password_sha256(&self) -> Result { let mut hasher = sha2::Sha256::new(); hasher.update(self.password.as_bytes()); Ok(format!("{:x}", hasher.finalize())) } #[allow(dead_code)] pub fn get_password_sha256_cache(&mut self) -> Result { if self.hash.len() == 0 { self.hash = self.get_password_sha256()?; } Ok(self.hash.clone()) } }