From cbc7b3810bfe8fa750e566e7db2166ef8b7fcad1 Mon Sep 17 00:00:00 2001
From: KunoiSayami <46131041+KunoiSayami@users.noreply.github.com>
Date: Thu, 6 May 2021 00:03:27 +0800
Subject: init
---
src/datastructures.rs | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)
create mode 100644 src/datastructures.rs
(limited to 'src/datastructures.rs')
diff --git a/src/datastructures.rs b/src/datastructures.rs
new file mode 100644
index 0000000..7ee01a9
--- /dev/null
+++ b/src/datastructures.rs
@@ -0,0 +1,75 @@
+/*
+ ** 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())
+ }
+}
\ No newline at end of file
--
cgit v1.3.1