summaryrefslogtreecommitdiff
path: root/src/login/repo/auth.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/login/repo/auth.rs')
-rw-r--r--src/login/repo/auth.rs50
1 files changed, 0 insertions, 50 deletions
diff --git a/src/login/repo/auth.rs b/src/login/repo/auth.rs
deleted file mode 100644
index b299697..0000000
--- a/src/login/repo/auth.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-
-use crate::login::{self, password::StoredHash, Login};
-
-pub trait Provider {
- fn auth(&mut self) -> Auth;
-}
-
-impl<'c> Provider for Transaction<'c, Sqlite> {
- fn auth(&mut self) -> Auth {
- Auth(self)
- }
-}
-
-pub struct Auth<'t>(&'t mut SqliteConnection);
-
-impl<'t> Auth<'t> {
- // Retrieves a login by name, plus its stored password hash for
- // verification. If there's no login with the requested name, this will
- // return [None].
- pub async fn for_name(
- &mut self,
- name: &str,
- ) -> Result<Option<(Login, StoredHash)>, sqlx::Error> {
- let found = sqlx::query!(
- r#"
- select
- id as "id: login::Id",
- name,
- password_hash as "password_hash: StoredHash"
- from login
- where name = $1
- "#,
- name,
- )
- .map(|rec| {
- (
- Login {
- id: rec.id,
- name: rec.name,
- },
- rec.password_hash,
- )
- })
- .fetch_optional(&mut *self.0)
- .await?;
-
- Ok(found)
- }
-}