2025-09-25 17:18:16 +02:00
/ *
This file is part of » zeitbild « .
Copyright 2025 'kcf' < fenris @ folksprak.org >
» 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 < http : / / www.gnu.org / licenses / > .
* /
2024-09-13 17:49:32 +02:00
namespace _zeitbild . api
{
/ * *
* /
export function register_session_begin (
2025-09-25 16:48:16 +02:00
rest_subject : lib_plankton.rest_http.type_rest
2024-09-13 17:49:32 +02:00
) : void
{
2025-09-25 16:48:16 +02:00
lib_plankton . rest_http . register <
2024-09-13 17:49:32 +02:00
{
name : string ;
password : string ;
} ,
(
null
|
string
)
> (
rest_subject ,
lib_plankton . http . enum_method . post ,
"/session/begin" ,
{
2025-09-25 16:48:16 +02:00
"description" : ( ) = > "führt die Anmeldung am System aus um geschützte Aktionen nutzen zu können" ,
2024-09-13 17:49:32 +02:00
"input_schema" : ( ) = > ( {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string"
} ,
"password" : {
"type" : "string"
} ,
} ,
"additionalProperties" : false ,
"required" : [
"name" ,
"password" ,
]
} ) ,
"output_schema" : ( ) = > ( {
"type" : "string" ,
"description" : "der Sitzungs-Schlüssel, der als Header 'X-Session-Key' gesetzt werden muss um Erlaubnis zur Ausführung geschützter Aktionen zu erhalten" ,
} ) ,
2025-09-25 16:48:16 +02:00
"restriction" : ( ) = > restriction_none ,
"execution" : ( ) = > async ( { "input" : input } ) = > {
2025-10-02 14:30:52 +02:00
if ( input === null )
{
2024-09-13 17:49:32 +02:00
return Promise . reject ( new Error ( "impossible" ) ) ;
}
2025-10-02 14:30:52 +02:00
else
{
2024-09-18 18:17:25 +02:00
const passed : boolean = await _zeitbild . service . auth_internal . check ( input . name , input . password ) ;
2025-10-02 14:30:52 +02:00
if ( ! passed )
{
2024-09-13 17:49:32 +02:00
return Promise . resolve ( {
"status_code" : 403 ,
"data" : null ,
} ) ;
}
else {
2024-09-18 18:17:25 +02:00
const session_key : string = await lib_plankton . session . begin ( input . name ) ;
2024-09-13 17:49:32 +02:00
return Promise . resolve ( {
"status_code" : 201 ,
"data" : session_key ,
} ) ;
}
}
} ,
}
) ;
}
}