/* 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; name : (null | string); } >( 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", }, "name": { "nullable": true, "type": "string" }, }, "required": [ "logged_in", "name", ], }), "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)) ); const user_object : (null | _zeitbild.type_user_object) = ( (user_id === null) ? null : (await _zeitbild.service.user.get(user_id)) ); return Promise.resolve( { "status_code": 200, "data": { "logged_in": (user_id !== null), "name": ((user_object === null) ? null : user_object.name), } } ); } } ); } }