backend/source/api/actions/member_register.ts
2024-04-22 10:02:34 +02:00

66 lines
1.7 KiB
TypeScript

namespace _aum.api
{
/**
* @todo types
*/
export function register_member_register(
rest_subject : lib_plankton.rest.type_rest
) : void
{
lib_plankton.rest.register<
{
name_login : string;
name_display : string;
salutation : string;
email_mode : ("none" | "number" | "number_and_name");
email_redirect : boolean;
password : string;
},
null
>(
rest_subject,
lib_plankton.http.enum_method.post,
"/member/register/:id",
{
"description": "nimmt zusätzliche Angaben eines Mitglieds entgegen",
"query_parameters": [
{
"name": "verification",
"required": true,
"description": "Prüfwert",
},
],
"restriction": restriction_verification(stuff => parseInt(stuff.path_parameters["id"])),
"execution": async ({"path_parameters": path_parameters, "query_parameters": query_parameters, "input": input}) => {
const id : _aum.service.member.type_id = parseInt(path_parameters["id"]);
try {
await _aum.service.member.register(
id,
{
"name_login": input.name_login,
"name_display": input.name_display,
"salutation": input.salutation,
"email_address_numberbased_use": ["number", "number_and_name"].includes(input.email_mode),
"email_address_namebased_use": ["number_and_name"].includes(input.email_mode),
"email_redirect_to_private": input.email_redirect,
"password": input.password,
}
);
return Promise.resolve({
"status_code": 200,
"data": null,
});
}
catch (error) {
return Promise.resolve({
"status_code": 409,
"data": "bereits registriert",
});
}
},
}
)
}
}