Start to build init openid login

This commit is contained in:
2023-06-02 11:49:18 +02:00
parent bca1768fc4
commit 83d731c546
9 changed files with 385 additions and 21 deletions

View File

@ -2,7 +2,7 @@ use crate::constants::StaticConstraints;
use crate::controllers::HttpResult;
use crate::models::{User, UserID};
use crate::services::rate_limiter_service::RatedAction;
use crate::services::{login_token_service, rate_limiter_service, users_service};
use crate::services::{login_token_service, openid_service, rate_limiter_service, users_service};
use actix_remote_ip::RemoteIP;
use actix_web::{web, HttpResponse};
@ -227,3 +227,20 @@ async fn finish_login(user: &User) -> HttpResult {
token: login_token_service::gen_new_token(user).await?,
}))
}
#[derive(serde::Deserialize)]
pub struct StartOpenIDLoginQuery {
provider: String,
}
#[derive(serde::Serialize)]
pub struct StartOpenIDLoginResponse {
url: String,
}
/// Start OpenID login
pub async fn start_openid_login(ip: RemoteIP, req: web::Json<StartOpenIDLoginQuery>) -> HttpResult {
let url = openid_service::start_login(&req.provider, ip.0).await?;
Ok(HttpResponse::Ok().json(StartOpenIDLoginResponse { url }))
}