From 5f79d2566d2ae9f6ab414ea779d377ef13d0bdd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Mon, 29 Apr 2024 00:15:32 +0200 Subject: [PATCH] [int] --- source/api/actions/member_create.ts | 1 + source/api/actions/member_get.ts | 67 +++++++++++++++++++++++++++++ source/api/actions/member_update.ts | 1 + source/api/functions.ts | 1 + source/service-member.ts | 36 ++++++++++++++-- tools/makefile | 1 + 6 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 source/api/actions/member_get.ts diff --git a/source/api/actions/member_create.ts b/source/api/actions/member_create.ts index 57acbdf..e4ce03d 100644 --- a/source/api/actions/member_create.ts +++ b/source/api/actions/member_create.ts @@ -66,6 +66,7 @@ namespace _espe.api "email_address_namebased_use": input["email_address_namebased_use"], "email_redirect_to_private": input["email_redirect_to_private"], "salutation": input["salutation"], + "registered": false, }; const member_id : _espe.service.member.type_id = await _espe.service.member.add(member_value); return Promise.resolve({ diff --git a/source/api/actions/member_get.ts b/source/api/actions/member_get.ts new file mode 100644 index 0000000..33f08d8 --- /dev/null +++ b/source/api/actions/member_get.ts @@ -0,0 +1,67 @@ +namespace _espe.api +{ + + /** + * @todo types + * @todo restriction + */ + export function register_member_get( + rest_subject : lib_plankton.rest.type_rest + ) : void + { + lib_plankton.rest.register< + int, + ( + null + | + { + name_real : string; + name_login : string; + email_address_numerical_value : string; + email_address_namely_value : string; + } + ) + >( + rest_subject, + lib_plankton.http.enum_method.get, + "/member/get/:id", + { + "description": "gibt Angaben über ein Mitglied aus, die für die Registrierung verwendet werden dürfen", + "query_parameters": [ + { + "name": "key", + "required": true, + "description": "Zugriffs-Schlüssel", + }, + ], + "restriction": restriction_none, + "execution": async ({"path_parameters": path_parameters, "query_parameters": query_parameters, "input": input}) => { + const key : string = query_parameters["key"]; + const member_id : _espe.service.member.type_id = parseInt(path_parameters["id"]); + const member_value : _espe.service.member.type_value = await _espe.service.member.get(member_id); + + if (member_value.registered) { + return Promise.resolve({ + "status_code": 409, + "data": /*"bereits registriert"*/null, + }); + } + else { + return Promise.resolve({ + "status_code": 200, + "data": { + "name_real": member_value.name_real_value, + "name_login": _espe.service.member.derive_login_name(member_value), + // TODO + "email_address_numerical_value": _espe.service.member.derive_email_address_numerical(member_value), + // TODO + "email_address_namely_value": _espe.service.member.derive_email_address_namely(member_value), + }, + }); + } + }, + } + ) + } + +} diff --git a/source/api/actions/member_update.ts b/source/api/actions/member_update.ts index 3ed6090..aa8d365 100644 --- a/source/api/actions/member_update.ts +++ b/source/api/actions/member_update.ts @@ -30,6 +30,7 @@ namespace _espe.api "email_address_namebased_use": input["email_address_namebased_use"], "email_redirect_to_private": input["email_redirect_to_private"], "salutation": input["salutation"], + "registered": /*input["registered"]*/member_value_old.registered, }; await _espe.service.member.modify(member_id, member_value_new); return Promise.resolve({ diff --git a/source/api/functions.ts b/source/api/functions.ts index 492a7c4..03b622c 100644 --- a/source/api/functions.ts +++ b/source/api/functions.ts @@ -37,6 +37,7 @@ namespace _espe.api _espe.api.register_member_create(rest_subject); _espe.api.register_member_update(rest_subject); // _espe.api.register_member_delete(rest_subject); + _espe.api.register_member_get(rest_subject); _espe.api.register_member_register(rest_subject); _espe.api.register_member_urge_for_registration(rest_subject); } diff --git a/source/service-member.ts b/source/service-member.ts index 72403d8..95052a2 100644 --- a/source/service-member.ts +++ b/source/service-member.ts @@ -21,6 +21,7 @@ namespace _espe.service.member email_address_namebased_use : boolean; email_redirect_to_private : boolean; salutation : (null | string); + registered : boolean; }; @@ -87,6 +88,7 @@ namespace _espe.service.member "email_address_namebased_use": (value.email_address_namebased_use ? 1 : 0), "email_redirect_to_private": (value.email_redirect_to_private ? 1 : 0), "salutation": value.salutation, + "registered": (value.registered ? 1 : 0), }; } @@ -110,6 +112,7 @@ namespace _espe.service.member "email_address_namebased_use": (row["email_address_namebased_use"] > 0), "email_redirect_to_private": (row["email_redirect_to_private"] > 0), "salutation": row["salutation"], + "registered": (row["registered"] > 0), }; } @@ -246,6 +249,7 @@ namespace _espe.service.member member.email_address_namebased_use = data.email_address_namebased_use member.email_redirect_to_private = data.email_redirect_to_private; member.password_image = await _espe.helpers.bcrypt_compute(data.password); + member.registered = true; await modify(id, member); } @@ -254,7 +258,31 @@ namespace _espe.service.member /** */ - function derive_email_address_namebased( + export function derive_login_name( + value : type_value + ) : string + { + return lib_plankton.string.coin( + "{{value}}{{extension}}", + { + "value": value.name_real_value.toLowerCase().replace(new RegExp(" ", "g"), "."), + "extension": ( + ( + (value.name_real_extension === null) + || + (value.name_real_extension === "") + ) + ? "" + : ("." + value.name_real_extension) + ), + } + ); + } + + + /** + */ + export function derive_email_address_namely( value : type_value ) : string { @@ -279,7 +307,7 @@ namespace _espe.service.member /** */ - function derive_email_address_numberbased( + export function derive_email_address_numerical( value : type_value ) : string { @@ -302,10 +330,10 @@ namespace _espe.service.member { return ( value.email_address_namebased_use - ? derive_email_address_namebased(value) + ? derive_email_address_namely(value) : ( value.email_address_numberbased_use - ? derive_email_address_numberbased(value) + ? derive_email_address_numerical(value) : value.email_address_private_value ) ); diff --git a/tools/makefile b/tools/makefile index 9259f28..0666240 100644 --- a/tools/makefile +++ b/tools/makefile @@ -41,6 +41,7 @@ ${dir_temp}/espe-unlinked.js: \ ${dir_source}/api/actions/member_create.ts \ ${dir_source}/api/actions/member_update.ts \ ${dir_source}/api/actions/member_delete.ts \ + ${dir_source}/api/actions/member_get.ts \ ${dir_source}/api/actions/member_urge_for_registration.ts \ ${dir_source}/api/actions/member_register.ts \ ${dir_source}/api/functions.ts \