use crate::db::user_principal::check_bcrypt;
use crate::logic::user::auth::bcrypted_pw;
use anyhow::anyhow;
use sqlx::types::chrono::{DateTime, Utc};
use sqlx::PgPool;
pub async fn authn_user(
pool: &PgPool,
acct: &str,
password: &str,
login_from: &str,
login_at: DateTime<Utc>,
) -> anyhow::Result<bool> {
let acct = acct.to_lowercase();
let bcrypt_password = bcrypted_pw(&acct, password)?;
let login_data =
check_bcrypt::check_bcrypt(pool, &acct, &bcrypt_password, login_from, login_at).await?;
if let Some(last_login) = login_data {
let retval = last_login
.first()
.ok_or_else(|| anyhow!("no login data. something went way wrong"))?
.success;
Ok(retval)
} else {
Ok(false)
}
}