add: purchased accounts

This commit is contained in:
trisua 2025-07-03 21:56:21 -04:00
parent 0aa2ea362f
commit 2ec8d86edf
22 changed files with 1279 additions and 124 deletions

View file

@ -88,41 +88,46 @@ pub async fn register_request(
// check invite code
if data.0.0.security.enable_invite_codes {
if props.invite_code.is_empty() {
return (
None,
Json(Error::MiscError("Missing invite code".to_string()).into()),
);
if !props.purchase {
if props.invite_code.is_empty() {
return (
None,
Json(Error::MiscError("Missing invite code".to_string()).into()),
);
}
let invite_code = match data.get_invite_code_by_code(&props.invite_code).await {
Ok(c) => c,
Err(e) => return (None, Json(e.into())),
};
if invite_code.is_used {
return (
None,
Json(Error::MiscError("This code has already been used".to_string()).into()),
);
}
// let owner = match data.get_user_by_id(invite_code.owner).await {
// Ok(u) => u,
// Err(e) => return (None, Json(e.into())),
// };
// if !owner.permissions.check(FinePermission::SUPPORTER) {
// return (
// None,
// Json(
// Error::MiscError("Invite code owner must be an active supporter".to_string())
// .into(),
// ),
// );
// }
user.invite_code = invite_code.id;
} else {
// this account is being purchased
user.awaiting_purchase = true;
}
let invite_code = match data.get_invite_code_by_code(&props.invite_code).await {
Ok(c) => c,
Err(e) => return (None, Json(e.into())),
};
if invite_code.is_used {
return (
None,
Json(Error::MiscError("This code has already been used".to_string()).into()),
);
}
// let owner = match data.get_user_by_id(invite_code.owner).await {
// Ok(u) => u,
// Err(e) => return (None, Json(e.into())),
// };
// if !owner.permissions.check(FinePermission::SUPPORTER) {
// return (
// None,
// Json(
// Error::MiscError("Invite code owner must be an active supporter".to_string())
// .into(),
// ),
// );
// }
user.invite_code = invite_code.id;
}
// push initial token
@ -133,7 +138,7 @@ pub async fn register_request(
match data.create_user(user).await {
Ok(_) => {
// mark invite as used
if data.0.0.security.enable_invite_codes {
if data.0.0.security.enable_invite_codes && !props.purchase {
let invite_code = match data.get_invite_code_by_code(&props.invite_code).await {
Ok(c) => c,
Err(e) => return (None, Json(e.into())),