1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Simplify login data struct, add experimental login flags

This commit is contained in:
NG (Graham)
2026-02-14 17:35:09 -05:00
parent b9a6fae1e0
commit 872f224af6
13 changed files with 119 additions and 72 deletions

View File

@@ -3,29 +3,20 @@ use actix_web::{post, web::{Data, Json}};
#[post("/authenticate/email/game")]
pub async fn email_password_auth(body: Json<libfj::robocraft::EmailUserAuthenticationPayload>, config: Data<super::RcConfig>) -> Result<Json<libfj::robocraft::AuthenticationResponseInfo>, super::ErrorTy> {
if body.display_name.is_none() {
if body.email_address.is_empty() {
return Err(super::ErrorTy::from_err(oj_rc_core::persist::user::AuthError {
message: "Missing display_name".to_owned(),
message: "Missing email_address".to_owned(),
code: oj_rc_core::data::error_codes::AuthErrorCode::BadCredentials,
}));
}
let display_name = body.display_name.clone().unwrap();
log::info!("Authenticating {} email user {}", body.target, display_name);
let payload = libfj::robocraft::TokenPayload {
public_id: display_name.clone(),
display_name: display_name.clone(),
robocraft_name: display_name.clone(),
email_address: body.email_address.clone(),
email_verified: true,
flags: Vec::new(),
};
let user_info = oj_rc_core::persist::user::UserInfo {
payload,
extra: oj_rc_core::persist::user::ExtraUserInfo::Email { password: body.password.clone() },
log::info!("Authenticating {} email user {}", body.target, body.email_address);
let user_info = oj_rc_core::persist::user::UserAuthInfo::Email {
email: body.email_address.clone(),
password: body.password.clone()
};
let response = config.account_provider.login(user_info).await
.map_err(|e| {
log::error!("Failed to authenticate {} user {}: {}", body.target, display_name, e.message);
log::error!("Failed to authenticate {} email user {}: {}", body.target, body.email_address, e.message);
super::ErrorTy::from_err(e)
})?;
Ok(Json(response.response))

View File

@@ -44,18 +44,7 @@ pub async fn steam_auth(body: Json<libfj::robocraft::SteamAuthenticationPayload>
code: oj_rc_core::data::error_codes::AuthErrorCode::BadCredentials,
}))?;
log::info!("Authenticating {} steam user {}", body.target, steam_id);
let payload = libfj::robocraft::TokenPayload {
public_id: steam_id.to_string(),
display_name: steam_id.to_string(),
robocraft_name: steam_id.to_string(),
email_address: format!("{}.rc.steam@ngram.ca", steam_id),
email_verified: true,
flags: Vec::new(),
};
let user_info = oj_rc_core::persist::user::UserInfo {
payload,
extra: oj_rc_core::persist::user::ExtraUserInfo::Steam { id: steam_id },
};
let user_info = oj_rc_core::persist::user::UserAuthInfo::Steam { id: steam_id };
let response = config.account_provider.login(user_info).await
.map_err(|e| {
log::error!("Failed to authenticate {} steam user {}: {}", body.target, steam_id, e.message);

View File

@@ -11,17 +11,9 @@ pub async fn user_password_auth(body: Json<libfj::robocraft::EmailUserAuthentica
}
let display_name = body.display_name.clone().unwrap();
log::info!("Authenticating {} user {}", body.target, display_name);
let payload = libfj::robocraft::TokenPayload {
public_id: display_name.clone(),
display_name: display_name.clone(),
robocraft_name: display_name.clone(),
email_address: body.email_address.clone(),
email_verified: true,
flags: Vec::new(),
};
let user_info = oj_rc_core::persist::user::UserInfo {
payload,
extra: oj_rc_core::persist::user::ExtraUserInfo::Username { password: body.password.clone() },
let user_info = oj_rc_core::persist::user::UserAuthInfo::Username {
username: display_name.clone(),
password: body.password.clone(),
};
let response = config.account_provider.login(user_info).await
.map_err(|e| {