2024-09-13 17:49:32 +02:00
namespace _zeitbild . api
{
/ * *
* /
export function register_session_begin (
2024-10-30 07:20:13 +01:00
rest_subject : lib_plankton.rest_caldav.type_rest
2024-09-13 17:49:32 +02:00
) : void
{
2024-10-30 07:20:13 +01:00
lib_plankton . rest_caldav . 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" ,
{
2024-11-28 23:08:24 +01: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" ,
} ) ,
2024-11-28 23:08:24 +01:00
"restriction" : ( ) = > restriction_none ,
"execution" : ( ) = > async ( { "input" : input } ) = > {
2024-09-13 17:49:32 +02:00
if ( input === null ) {
return Promise . reject ( new Error ( "impossible" ) ) ;
}
else {
2024-09-18 18:17:25 +02:00
const passed : boolean = await _zeitbild . service . auth_internal . check ( input . name , input . password ) ;
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 ,
} ) ;
}
}
} ,
}
) ;
}
}