use argon2::Argon2;
use password_hash::{PasswordHash, PasswordHasher, PasswordVerifier, SaltString};
use rand_core::OsRng;
use sqlx::sqlite::SqlitePool;
use super::repo::{
logins::{Login, Provider as _},
tokens::Provider as _,
};
use crate::{clock::DateTime, error::BoxedError};
pub struct Logins<'a> {
db: &'a SqlitePool,
}
impl<'a> Logins<'a> {
pub const fn new(db: &'a SqlitePool) -> Self {
Self { db }
}
pub async fn login(
&self,
name: &str,
password: &str,
login_at: DateTime,
) -> Result