use crate::models::user::Model as User;
use doido::controller::{controller, Context, Response};
use doido_auth::{require_user, CurrentUser, TwoFactor};
use serde::Deserialize;
#[derive(Deserialize)]
pub struct TwoFactorForm {
pub code: String,
}
pub struct TwoFactorController;
#[controller]
impl TwoFactorController {
#[before_action(require_user)]
/// POST /users/two_factor
pub async fn create(mut ctx: Context, user: CurrentUser<User>) -> doido::Result<Response> {
let form: TwoFactorForm = ctx.body_json().await?;
TwoFactor::verify(&user, &form.code)?;
Ok(ctx.status(204))
}
}