2024-05-20 21:56:48 +02:00
/ *
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/>.
* /
2024-04-22 10:22:18 +02:00
namespace _espe . api
2024-04-22 10:02:34 +02:00
{
/ * *
* /
export function register_session_begin (
rest_subject : lib_plankton.rest.type_rest
) : void
{
2024-05-27 17:32:42 +02:00
lib_plankton . rest . register <
{
name : string ;
password : string ;
} ,
(
null
|
string
)
> (
2024-04-22 10:02:34 +02:00
rest_subject ,
lib_plankton . http . enum_method . post ,
2024-04-30 19:05:23 +02:00
_espe . conf . get ( ) . server . path_base + "/session/begin" ,
2024-04-22 10:02:34 +02:00
{
"description" : "führt die Anmeldung am System aus um geschützte Aktionen nutzen zu können" ,
"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" ,
} ) ,
"restriction" : restriction_none ,
"execution" : async ( { "input" : input } ) = > {
2024-05-27 17:32:42 +02:00
if ( input === null ) {
return Promise . reject ( new Error ( "impossible" ) ) ;
2024-04-22 10:02:34 +02:00
}
else {
2025-03-31 18:39:50 +00:00
const admin_entry : ( null | _espe . service . admin . type_value ) = await _espe . service . admin . login ( input . name , input . password ) ;
if ( admin_entry === null ) {
2024-05-27 17:32:42 +02:00
return Promise . resolve ( {
"status_code" : 403 ,
"data" : null ,
} ) ;
}
else {
2025-03-31 18:39:50 +00:00
const session_key : string = await lib_plankton . session . begin ( admin_entry . object . name ) ;
2024-05-27 17:32:42 +02:00
return Promise . resolve ( {
"status_code" : 201 ,
"data" : session_key ,
} ) ;
}
2024-04-22 10:02:34 +02:00
}
} ,
}
) ;
}
}