This commit is contained in:
roydfalk 2025-08-21 22:45:41 +00:00
parent ebc9baa4b3
commit 0ab67447f3
11 changed files with 28 additions and 106 deletions

View file

@ -2,23 +2,23 @@
"groups": [ "groups": [
{ {
"id": 1, "id": 1,
"name": "auto" "name": "Auto"
}, },
{ {
"id": 2, "id": 2,
"name": "zug" "name": "Zug"
}, },
{ {
"id": 3, "id": 3,
"name": "flugzeug" "name": "Flugzeug"
}, },
{ {
"id": 4, "id": 4,
"name": "fahrrad" "name": "Fahrrad"
}, },
{ {
"id": 5, "id": 5,
"name": "zu_fuß" "name": "zu Fuß"
} }
], ],
"admins": [ "admins": [

View file

@ -101,11 +101,11 @@ namespace _espe.api
}, },
"required": [ "required": [
"expiry", "expiry",
"name_mode", "name_changeable",
"name_value", "name_value",
"email_address_mode", "email_address_changeable",
"email_address_value", "email_address_value",
"groups_mode", "groups_changeable",
"groups_value", "groups_value",
] ]
}), }),

View file

@ -1,66 +0,0 @@
/*
Espe | Ein schlichtes Werkzeug zur Mitglieder-Verwaltung | Backend
Copyright (C) 2024 Christian Fraß
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see
<https://www.gnu.org/licenses/>.
*/
namespace _espe.api
{
/**
*/
export function register_member_summon(
rest_subject : lib_plankton.rest_http.type_rest
) : void
{
lib_plankton.rest_http.register<
{
url_template : string;
},
(
null
|
string
)
>(
rest_subject,
lib_plankton.http.enum_method.post,
_espe.conf.get().server.path_base + "/member/summon/:id",
{
"description": () => "sendet an ein Mitglied eine E-Mail mit Aufforderung zur Registrierung",
"restriction": () => restriction_logged_in,
"execution": () => async ({"path_parameters": path_parameters, "input": input}) => {
if (input === null) {
return Promise.reject(new Error("impossible"));
}
else {
const member_id : _espe.type.member_id = parseInt(path_parameters["id"]);
const url : (null | string) = await _espe.service.member.summon(member_id, input.url_template);
return (
(url === null)
? Promise.resolve({
"status_code": 409,
"data": null,
})
: Promise.resolve({
"status_code": 200,
"data": url,
})
);
}
}
}
);
}
}

View file

@ -52,7 +52,6 @@ namespace _espe.api
} }
// member // member
{ {
_espe.api.register_member_summon(rest_subject);
_espe.api.register_member_list(rest_subject); _espe.api.register_member_list(rest_subject);
_espe.api.register_member_read(rest_subject); _espe.api.register_member_read(rest_subject);
_espe.api.register_member_modify(rest_subject); _espe.api.register_member_modify(rest_subject);

View file

@ -273,7 +273,7 @@ namespace _espe.repository.member
// groups // groups
const hits : Array<{key : Array<any>; preview : Record<string, any>;}> = await get_group_chest().search( const hits : Array<{key : Array<any>; preview : Record<string, any>;}> = await get_group_chest().search(
{ {
"expression": "group_id = $group_id", "expression": "member_id = $member_id",
"arguments": {"member_id": id} "arguments": {"member_id": id}
} }
); );

View file

@ -623,18 +623,14 @@ namespace _espe.service.member
* @todo check validity (e.g. username characters) * @todo check validity (e.g. username characters)
*/ */
export async function export_authelia_user_data( export async function export_authelia_user_data(
options : { {
"custom_data": custom_data = null,
} : {
custom_data ?: (null | Array<_espe.type.member_object>); custom_data ?: (null | Array<_espe.type.member_object>);
} = {} } = {
}
) : Promise<any> ) : Promise<any>
{ {
options = Object.assign(
{
"custom_data": null,
},
options
);
type type_entry = { type type_entry = {
disabled : boolean; disabled : boolean;
displayname : string; displayname : string;
@ -645,11 +641,11 @@ namespace _espe.service.member
return lib_plankton.call.convey( return lib_plankton.call.convey(
( (
( (
(options.custom_data !== undefined) (custom_data !== undefined)
&& &&
(options.custom_data !== null) (custom_data !== null)
) )
? (options.custom_data.map((member_object, index) => ({"id": index, "object": member_object}))) ? (custom_data.map((member_object, index) => ({"id": index, "object": member_object})))
: await dump() : await dump()
), ),
[ [
@ -661,8 +657,6 @@ namespace _espe.service.member
), ),
(x : Array<any>) => x.filter( (x : Array<any>) => x.filter(
entry => ( entry => (
entry.object.registered
&&
( (
(entry.object.password_image !== null) (entry.object.password_image !== null)
&& &&
@ -697,20 +691,16 @@ namespace _espe.service.member
/** /**
*/ */
export async function export_authelia_user_file( export async function export_authelia_user_file(
options : { {
"custom_data": custom_data = null,
} : {
custom_data ?: (null | Array<_espe.type.member_object>); custom_data ?: (null | Array<_espe.type.member_object>);
} = {} } = {
}
) : Promise<string> ) : Promise<string>
{ {
options = Object.assign(
{
"custom_data": null,
},
options
);
const nm_yaml = require("yaml"); const nm_yaml = require("yaml");
return nm_yaml.stringify(await export_authelia_user_data(options)); return nm_yaml.stringify(await export_authelia_user_data({"custom_data": custom_data}));
} }

View file

@ -65,18 +65,17 @@ ${dir_temp}/espe-core.js ${dir_temp}/espe-core.d.ts: \
${dir_source}/api/actions/group_read.ts \ ${dir_source}/api/actions/group_read.ts \
${dir_source}/api/actions/group_add.ts \ ${dir_source}/api/actions/group_add.ts \
${dir_source}/api/actions/group_modify.ts \ ${dir_source}/api/actions/group_modify.ts \
${dir_source}/api/actions/member_summon.ts \
${dir_source}/api/actions/member_list.ts \ ${dir_source}/api/actions/member_list.ts \
${dir_source}/api/actions/member_read.ts \ ${dir_source}/api/actions/member_read.ts \
${dir_source}/api/actions/member_modify.ts \ ${dir_source}/api/actions/member_modify.ts \
${dir_source}/api/actions/member_delete.ts \ ${dir_source}/api/actions/member_delete.ts \
${dir_source}/api/actions/member_password_change_initialize.ts \ ${dir_source}/api/actions/member_password_change_initialize.ts \
${dir_source}/api/actions/member_password_change_execute.ts \ ${dir_source}/api/actions/member_password_change_execute.ts \
${dir_source}/api/actions/invite_list.ts \ ${dir_source}/api/actions/invitation_list.ts \
${dir_source}/api/actions/invite_read.ts \ ${dir_source}/api/actions/invitation_read.ts \
${dir_source}/api/actions/invite_create.ts \ ${dir_source}/api/actions/invitation_create.ts \
${dir_source}/api/actions/invite_examine.ts \ ${dir_source}/api/actions/invitation_examine.ts \
${dir_source}/api/actions/invite_accept.ts \ ${dir_source}/api/actions/invitation_accept.ts \
${dir_source}/api/functions.ts \ ${dir_source}/api/functions.ts \
${dir_source}/conf.ts ${dir_source}/conf.ts
@ ${cmd_log} "compile | core …" @ ${cmd_log} "compile | core …"