|
1 | | -use crate::api::v1::auth::models::UserRealm; |
2 | 1 | use crate::api::v1::auth::models::{CSHUserInfo, UserInfo}; |
3 | 2 | use crate::app::AppState; |
| 3 | +use crate::db::user::{UserData, UserRealm}; |
4 | 4 | use actix_session::Session; |
5 | 5 | use actix_web::http::header; |
6 | 6 | use actix_web::{get, Scope}; |
7 | 7 | use actix_web::{web, HttpResponse, Responder}; |
| 8 | +use log::error; |
8 | 9 | use oauth2::reqwest::async_http_client; |
9 | 10 | use oauth2::{AuthorizationCode, TokenResponse}; |
10 | 11 | use reqwest::Client; |
11 | 12 | use serde::Deserialize; |
| 13 | +use serde_json::json; |
12 | 14 | use utoipa::{OpenApi, ToSchema}; |
13 | 15 |
|
14 | 16 | use crate::api::v1::auth::common; |
@@ -70,15 +72,20 @@ async fn auth( |
70 | 72 | .await |
71 | 73 | .unwrap(); |
72 | 74 |
|
73 | | - sqlx::query!( |
74 | | - "INSERT INTO users (id, realm, name, email) VALUES ($1, $2, $3, $4) ON CONFLICT (id) DO UPDATE SET realm = EXCLUDED.realm, name = EXCLUDED.name, email = EXCLUDED.email;", |
75 | | - user_info.ldap_id, |
76 | | - UserRealm::Csh as _, |
| 75 | + if let Err(err) = UserData::insert_new( |
| 76 | + user_info.ldap_id.clone(), |
| 77 | + UserRealm::Csh, |
77 | 78 | format!("{} {}", user_info.given_name, user_info.family_name), |
78 | | - user_info.email |
| 79 | + user_info.email.clone(), |
| 80 | + &data.db, |
79 | 81 | ) |
80 | | - .execute(&data.db) |
81 | | - .await.unwrap(); |
| 82 | + .await |
| 83 | + { |
| 84 | + error!("{}", err); |
| 85 | + return HttpResponse::InternalServerError().json(json!({ |
| 86 | + "error": "Failed to add user to database" |
| 87 | + })); |
| 88 | + } |
82 | 89 |
|
83 | 90 | session.insert("login", true).unwrap(); |
84 | 91 | session |
|
0 commit comments