[mod] member management: auto_register option
This commit is contained in:
parent
3884b8ef40
commit
fd57411a9d
5 changed files with 76 additions and 36 deletions
|
@ -105,6 +105,21 @@ namespace _espe.api
|
|||
),
|
||||
}
|
||||
);
|
||||
if (! _espe.conf.get().settings.misc.auto_register) {
|
||||
// do nothing
|
||||
}
|
||||
else {
|
||||
// TODO: Werte in Konfiguration auslagern
|
||||
await _espe.service.member.register(
|
||||
member_id,
|
||||
{
|
||||
"email_use_veiled_address": false,
|
||||
"email_use_nominal_address": false,
|
||||
"email_redirect_to_private_address": false,
|
||||
"password": null,
|
||||
}
|
||||
);
|
||||
}
|
||||
return Promise.resolve({
|
||||
"status_code": 201,
|
||||
"data": member_id
|
||||
|
|
|
@ -22,8 +22,6 @@ namespace _espe.conf
|
|||
general : {
|
||||
language : (null | string);
|
||||
verbosity : (
|
||||
"none"
|
||||
|
|
||||
"debug"
|
||||
|
|
||||
"notice"
|
||||
|
@ -33,6 +31,8 @@ namespace _espe.conf
|
|||
"warning"
|
||||
|
|
||||
"error"
|
||||
|
|
||||
"none"
|
||||
);
|
||||
verification_secret : (null | string);
|
||||
};
|
||||
|
@ -102,6 +102,7 @@ namespace _espe.conf
|
|||
misc : {
|
||||
prefix_for_veiled_email_addresses : string;
|
||||
facultative_membership_number : boolean;
|
||||
auto_register : boolean;
|
||||
};
|
||||
summon_email : {
|
||||
remark : string;
|
||||
|
@ -258,6 +259,7 @@ namespace _espe.conf
|
|||
((node_settings_misc) => ({
|
||||
"prefix_for_veiled_email_addresses": (node_settings_misc["prefix_for_veiled_email_addresses"] ?? "member-"),
|
||||
"facultative_membership_number": (node_settings_misc["facultative_membership_number"] ?? false),
|
||||
"auto_register": (node_settings_misc["auto_register"] ?? false),
|
||||
})) (node_settings["misc"] ?? {})
|
||||
),
|
||||
"summon_email": (
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"email.registration.subject": "Registrierung erfolgt",
|
||||
"email.registration.body": "Das Mitglied '{{name_display}}' hat sich soeben registriert:\n\n{{url}}",
|
||||
"email.activation.subject": "Freischaltung erfolgt",
|
||||
"email.activation.body": "Hi, {{name_display}}\n\nDein Mitglieder-Konto wurde gerade freigeschalten. Du kannst dich nun anmelden:\n\nURL: {{url}}\nAnmelde-Name: {{name_login}}",
|
||||
"email.activation.body": "Hi, {{name_display}}\n\nDein Mitglieder-Konto wurde gerade freigeschalten. Du kannst dich nun anmelden:\n\nURL: {{url}}\nAnmelde-Name: {{name_login}}\n{{password_info}}",
|
||||
"email.activation.password_info": "Passwort: {{password}}\n\nBitte ändere dein Passwort zeitnah!",
|
||||
"email.password_change.initialization.subject": "Passwort-Änderung eingeleitet",
|
||||
"email.password_change.initialization.body": "Hi, {{name}}\n\nDie Funktion zum Ändern deines Passwortes wurde aufgerufen. Wenn du dein Passwort ändern willst, rufe folgenden Link auf:\n\n{{url}}\n",
|
||||
"email.password_change.execution.subject": "Passwort-Änderung abgeschlossen",
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"email.registration.subject": "Registration received",
|
||||
"email.registration.body": "The member '{{name_display}}' just registered:\n\n{{url}}",
|
||||
"email.activation.subject": "Activated",
|
||||
"email.activation.body": "Hi, {{name_display}}\n\nYour account has just been activated. You may login now:\n\nURL: {{url}}\nLogin name: {{name_login}}",
|
||||
"email.activation.body": "Hi, {{name_display}}\n\nYour account has just been activated. You may login now:\n\nURL: {{url}}\nLogin name: {{name_login}}\n{{password_info}}",
|
||||
"email.activation.password_info": "Password: {{password}}\n\Please change your password soon!",
|
||||
"email.password_change.initialization.subject": "Password change initialized",
|
||||
"email.password_change.initialization.body": "Hi, {{name}}\n\nThe function for changing your password has been triggered. If you want to change your password, open the folloling link:\n\n{{url}}",
|
||||
"email.password_change.execution.subject": "Password change concluded",
|
||||
|
|
|
@ -191,9 +191,18 @@ namespace _espe.service.member
|
|||
/**
|
||||
*/
|
||||
async function send_activation_email(
|
||||
member_object : _espe.type.member_object
|
||||
member_object : _espe.type.member_object,
|
||||
options : {
|
||||
password ?: (null | string);
|
||||
} = {}
|
||||
) : Promise<void>
|
||||
{
|
||||
options = Object.assign(
|
||||
{
|
||||
"password": null,
|
||||
},
|
||||
options
|
||||
);
|
||||
if (! member_object.enabled) {
|
||||
// do nothing
|
||||
}
|
||||
|
@ -219,6 +228,20 @@ namespace _espe.service.member
|
|||
"name_display": name_display(member_object),
|
||||
"name_login": name_login(member_object),
|
||||
"url": (_espe.conf.get().settings.connections.login_url ?? "--"),
|
||||
"password_info": (
|
||||
(
|
||||
(options.password === undefined)
|
||||
||
|
||||
(options.password === null)
|
||||
)
|
||||
? ""
|
||||
: lib_plankton.string.coin(
|
||||
lib_plankton.translate.get("email.activation.body"),
|
||||
{
|
||||
"password": options.password,
|
||||
}
|
||||
)
|
||||
),
|
||||
}
|
||||
)
|
||||
);
|
||||
|
@ -424,28 +447,31 @@ namespace _espe.service.member
|
|||
);
|
||||
|
||||
const member_object : _espe.type.member_object = await get(member_id);
|
||||
|
||||
let flaws : Array<{incident : string; details : Record<string, any>;}> = [];
|
||||
const password_set : boolean = (
|
||||
(data.password !== null)
|
||||
&&
|
||||
(data.password !== "")
|
||||
);
|
||||
let password_value : string;
|
||||
let password_generated : boolean;
|
||||
if (member_object.registered) {
|
||||
flaws.push({"incident": "already_registered", "details": {}});
|
||||
password_value = "";
|
||||
password_generated = false;
|
||||
}
|
||||
else {
|
||||
if (
|
||||
password_set
|
||||
&&
|
||||
(data.password !== null)
|
||||
&&
|
||||
(data.password !== "")
|
||||
) {
|
||||
flaws = flaws.concat(
|
||||
validate_password(data.password)
|
||||
.map(flaw => ({"incident": ("password_" + flaw.incident), "details": flaw.details}))
|
||||
);
|
||||
password_value = data.password;
|
||||
password_generated = false;
|
||||
}
|
||||
else {
|
||||
// do nothing
|
||||
password_value = generate_password();
|
||||
password_generated = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -456,7 +482,7 @@ namespace _espe.service.member
|
|||
member_object.email_use_veiled_address = data.email_use_veiled_address;
|
||||
member_object.email_use_nominal_address = data.email_use_nominal_address;
|
||||
member_object.email_redirect_to_private_address = data.email_redirect_to_private_address;
|
||||
member_object.password_image = await password_image(data.password);
|
||||
member_object.password_image = await password_image(password_value);
|
||||
member_object.registered = true;
|
||||
await _espe.repository.member.update(member_id, member_object);
|
||||
signal_change();
|
||||
|
@ -475,29 +501,24 @@ namespace _espe.service.member
|
|||
}
|
||||
)
|
||||
);
|
||||
if (url === null) {
|
||||
// do nothing
|
||||
}
|
||||
else {
|
||||
/*await*/ _espe.helpers.notify_admins(
|
||||
lib_plankton.string.coin(
|
||||
"{{head}} | {{core}}",
|
||||
{
|
||||
"head": _espe.conf.get().settings.organisation.name,
|
||||
"core": lib_plankton.translate.get("email.registration.subject"),
|
||||
}
|
||||
),
|
||||
lib_plankton.string.coin(
|
||||
lib_plankton.translate.get("email.registration.body"),
|
||||
{
|
||||
"name_display": name_display(member_object),
|
||||
"url": url,
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
/*await*/ _espe.helpers.notify_admins(
|
||||
lib_plankton.string.coin(
|
||||
"{{head}} | {{core}}",
|
||||
{
|
||||
"head": _espe.conf.get().settings.organisation.name,
|
||||
"core": lib_plankton.translate.get("email.registration.subject"),
|
||||
}
|
||||
),
|
||||
lib_plankton.string.coin(
|
||||
lib_plankton.translate.get("email.registration.body"),
|
||||
{
|
||||
"name_display": name_display(member_object),
|
||||
"url": (url ?? "?"),
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
/*await*/ send_activation_email(member_object);
|
||||
/*await*/ send_activation_email(member_object, {"password": password_generated ? password_value : null});
|
||||
}
|
||||
|
||||
return Promise.resolve(flaws);
|
||||
|
|
Loading…
Add table
Reference in a new issue