[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({
|
return Promise.resolve({
|
||||||
"status_code": 201,
|
"status_code": 201,
|
||||||
"data": member_id
|
"data": member_id
|
||||||
|
|
|
@ -22,8 +22,6 @@ namespace _espe.conf
|
||||||
general : {
|
general : {
|
||||||
language : (null | string);
|
language : (null | string);
|
||||||
verbosity : (
|
verbosity : (
|
||||||
"none"
|
|
||||||
|
|
|
||||||
"debug"
|
"debug"
|
||||||
|
|
|
|
||||||
"notice"
|
"notice"
|
||||||
|
@ -33,6 +31,8 @@ namespace _espe.conf
|
||||||
"warning"
|
"warning"
|
||||||
|
|
|
|
||||||
"error"
|
"error"
|
||||||
|
|
|
||||||
|
"none"
|
||||||
);
|
);
|
||||||
verification_secret : (null | string);
|
verification_secret : (null | string);
|
||||||
};
|
};
|
||||||
|
@ -102,6 +102,7 @@ namespace _espe.conf
|
||||||
misc : {
|
misc : {
|
||||||
prefix_for_veiled_email_addresses : string;
|
prefix_for_veiled_email_addresses : string;
|
||||||
facultative_membership_number : boolean;
|
facultative_membership_number : boolean;
|
||||||
|
auto_register : boolean;
|
||||||
};
|
};
|
||||||
summon_email : {
|
summon_email : {
|
||||||
remark : string;
|
remark : string;
|
||||||
|
@ -258,6 +259,7 @@ namespace _espe.conf
|
||||||
((node_settings_misc) => ({
|
((node_settings_misc) => ({
|
||||||
"prefix_for_veiled_email_addresses": (node_settings_misc["prefix_for_veiled_email_addresses"] ?? "member-"),
|
"prefix_for_veiled_email_addresses": (node_settings_misc["prefix_for_veiled_email_addresses"] ?? "member-"),
|
||||||
"facultative_membership_number": (node_settings_misc["facultative_membership_number"] ?? false),
|
"facultative_membership_number": (node_settings_misc["facultative_membership_number"] ?? false),
|
||||||
|
"auto_register": (node_settings_misc["auto_register"] ?? false),
|
||||||
})) (node_settings["misc"] ?? {})
|
})) (node_settings["misc"] ?? {})
|
||||||
),
|
),
|
||||||
"summon_email": (
|
"summon_email": (
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
"email.registration.subject": "Registrierung erfolgt",
|
"email.registration.subject": "Registrierung erfolgt",
|
||||||
"email.registration.body": "Das Mitglied '{{name_display}}' hat sich soeben registriert:\n\n{{url}}",
|
"email.registration.body": "Das Mitglied '{{name_display}}' hat sich soeben registriert:\n\n{{url}}",
|
||||||
"email.activation.subject": "Freischaltung erfolgt",
|
"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.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.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",
|
"email.password_change.execution.subject": "Passwort-Änderung abgeschlossen",
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
"email.registration.subject": "Registration received",
|
"email.registration.subject": "Registration received",
|
||||||
"email.registration.body": "The member '{{name_display}}' just registered:\n\n{{url}}",
|
"email.registration.body": "The member '{{name_display}}' just registered:\n\n{{url}}",
|
||||||
"email.activation.subject": "Activated",
|
"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.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.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",
|
"email.password_change.execution.subject": "Password change concluded",
|
||||||
|
|
|
@ -191,9 +191,18 @@ namespace _espe.service.member
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
async function send_activation_email(
|
async function send_activation_email(
|
||||||
member_object : _espe.type.member_object
|
member_object : _espe.type.member_object,
|
||||||
|
options : {
|
||||||
|
password ?: (null | string);
|
||||||
|
} = {}
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
|
options = Object.assign(
|
||||||
|
{
|
||||||
|
"password": null,
|
||||||
|
},
|
||||||
|
options
|
||||||
|
);
|
||||||
if (! member_object.enabled) {
|
if (! member_object.enabled) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
@ -219,6 +228,20 @@ namespace _espe.service.member
|
||||||
"name_display": name_display(member_object),
|
"name_display": name_display(member_object),
|
||||||
"name_login": name_login(member_object),
|
"name_login": name_login(member_object),
|
||||||
"url": (_espe.conf.get().settings.connections.login_url ?? "--"),
|
"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);
|
const member_object : _espe.type.member_object = await get(member_id);
|
||||||
|
|
||||||
let flaws : Array<{incident : string; details : Record<string, any>;}> = [];
|
let flaws : Array<{incident : string; details : Record<string, any>;}> = [];
|
||||||
const password_set : boolean = (
|
let password_value : string;
|
||||||
(data.password !== null)
|
let password_generated : boolean;
|
||||||
&&
|
|
||||||
(data.password !== "")
|
|
||||||
);
|
|
||||||
if (member_object.registered) {
|
if (member_object.registered) {
|
||||||
flaws.push({"incident": "already_registered", "details": {}});
|
flaws.push({"incident": "already_registered", "details": {}});
|
||||||
|
password_value = "";
|
||||||
|
password_generated = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (
|
if (
|
||||||
password_set
|
|
||||||
&&
|
|
||||||
(data.password !== null)
|
(data.password !== null)
|
||||||
|
&&
|
||||||
|
(data.password !== "")
|
||||||
) {
|
) {
|
||||||
flaws = flaws.concat(
|
flaws = flaws.concat(
|
||||||
validate_password(data.password)
|
validate_password(data.password)
|
||||||
.map(flaw => ({"incident": ("password_" + flaw.incident), "details": flaw.details}))
|
.map(flaw => ({"incident": ("password_" + flaw.incident), "details": flaw.details}))
|
||||||
);
|
);
|
||||||
|
password_value = data.password;
|
||||||
|
password_generated = false;
|
||||||
}
|
}
|
||||||
else {
|
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_veiled_address = data.email_use_veiled_address;
|
||||||
member_object.email_use_nominal_address = data.email_use_nominal_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.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;
|
member_object.registered = true;
|
||||||
await _espe.repository.member.update(member_id, member_object);
|
await _espe.repository.member.update(member_id, member_object);
|
||||||
signal_change();
|
signal_change();
|
||||||
|
@ -475,10 +501,6 @@ namespace _espe.service.member
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if (url === null) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/*await*/ _espe.helpers.notify_admins(
|
/*await*/ _espe.helpers.notify_admins(
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin(
|
||||||
"{{head}} | {{core}}",
|
"{{head}} | {{core}}",
|
||||||
|
@ -491,13 +513,12 @@ namespace _espe.service.member
|
||||||
lib_plankton.translate.get("email.registration.body"),
|
lib_plankton.translate.get("email.registration.body"),
|
||||||
{
|
{
|
||||||
"name_display": name_display(member_object),
|
"name_display": name_display(member_object),
|
||||||
"url": url,
|
"url": (url ?? "?"),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
/*await*/ send_activation_email(member_object, {"password": password_generated ? password_value : null});
|
||||||
/*await*/ send_activation_email(member_object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.resolve(flaws);
|
return Promise.resolve(flaws);
|
||||||
|
|
Loading…
Add table
Reference in a new issue