use uuid::Uuid; use crate::{ app::App, clock::RequestedAt, login::extract::{IdentitySecret, IdentityToken}, password::Password, }; pub fn not_logged_in() -> IdentityToken { IdentityToken::new() } pub async fn logged_in(app: &App, login: &(String, Password), now: &RequestedAt) -> IdentityToken { let (name, password) = login; let token = app .logins() .login(name, password, now) .await .expect("should succeed given known-valid credentials"); IdentityToken::new().set(token) } pub fn secret(identity: &IdentityToken) -> IdentitySecret { identity.secret().expect("identity contained a secret") } pub fn fictitious() -> IdentityToken { let token = Uuid::new_v4().to_string(); IdentityToken::new().set(token) }