diff --git a/source/api/actions/session_status.ts b/source/api/actions/session_status.ts new file mode 100644 index 0000000..876979c --- /dev/null +++ b/source/api/actions/session_status.ts @@ -0,0 +1,80 @@ +/* +This file is part of »zeitbild«. + +Copyright 2025 'kcf' + +»zeitbild« is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +»zeitbild« 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with »zeitbild«. If not, see . + */ + + +namespace _zeitbild.api +{ + + /** + */ + export function register_session_status( + rest_subject : lib_plankton.rest_http.type_rest + ) : void + { + register< + null, + { + logged_in : boolean; + } + >( + rest_subject, + lib_plankton.http.enum_method.get, + "/session/status", + { + "description": "gibt Information über den Nutzer aus", + "output_schema": () => ({ + "nullable": false, + "type": "object", + "additionalProperties": false, + "properties": { + "logged_in": { + "nullable": false, + "type": "boolean", + }, + }, + "required": [ + "logged_in", + ], + }), + "restriction": restriction_none, + "execution": async (stuff) => { + const user_id : (null | _zeitbild.type_user_id) = await ( + session_from_stuff(stuff) + .then( + (session : {key : string; value : lib_plankton.session.type_session;}) => ( + _zeitbild.service.user.identify(session.value.name) + .catch(x => Promise.resolve(null)) + ) + ) + .catch(x => Promise.resolve(null)) + ); + return Promise.resolve( + { + "status_code": 200, + "data": { + "logged_in": (user_id !== null), + } + } + ); + } + } + ); + } + +} diff --git a/source/api/functions.ts b/source/api/functions.ts index bea3786..c295f09 100644 --- a/source/api/functions.ts +++ b/source/api/functions.ts @@ -49,6 +49,7 @@ namespace _zeitbild.api _zeitbild.api.register_session_begin(rest_subject); _zeitbild.api.register_session_end(rest_subject); _zeitbild.api.register_session_oidc(rest_subject); + _zeitbild.api.register_session_status(rest_subject); } // user { diff --git a/tools/makefile b/tools/makefile index b175eba..ce88995 100644 --- a/tools/makefile +++ b/tools/makefile @@ -64,6 +64,7 @@ ${dir_temp}/zeitbild-unlinked.js: \ ${dir_source}/api/actions/session_begin.ts \ ${dir_source}/api/actions/session_oidc.ts \ ${dir_source}/api/actions/session_end.ts \ + ${dir_source}/api/actions/session_status.ts \ ${dir_source}/api/actions/users.ts \ ${dir_source}/api/actions/user_dav_conf.ts \ ${dir_source}/api/actions/user_dav_token.ts \