ate-auth 1.9.0

Represents a standardized data model and API for authenticating an ATE chain-of-trust
#![allow(unused_imports)]
use ate::prelude::*;
use serde::*;
use std::time::Duration;
use tracing::{debug, error, info, instrument, span, trace, warn, Level};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct LoginRequest {
    pub email: String,
    pub secret: EncryptKey,
    pub verification_code: Option<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct LoginResponse {
    pub user_key: PrimaryKey,
    pub nominal_read: ate::crypto::AteHash,
    pub nominal_write: PublicSignKey,
    pub sudo_read: ate::crypto::AteHash,
    pub sudo_write: PublicSignKey,
    pub authority: AteSessionUser,
    pub message_of_the_day: Option<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum LoginFailed {
    UserNotFound(String),
    WrongPassword,
    AccountLocked(Duration),
    Unverified(String),
    NoMasterKey,
    InternalError(u16),
}

impl<E> From<E> for LoginFailed
where
    E: std::error::Error + Sized,
{
    fn from(err: E) -> Self {
        LoginFailed::InternalError(ate::utils::obscure_error(err))
    }
}