frontend-dali/source/pages/login/logic.ts

119 lines
2.8 KiB
TypeScript
Raw Normal View History

2025-09-25 17:54:20 +02:00
namespace _dali.pages
2024-09-26 16:47:01 +02:00
{
/**
*/
lib_plankton.zoo_page.register(
"login",
async (parameters, target_element) => {
target_element.innerHTML = "";
2025-09-25 17:54:20 +02:00
const preparation : {kind : string; data : any;} = await _dali.backend.session_prepare(
2024-09-26 19:01:05 +02:00
{
2025-09-25 17:54:20 +02:00
"oidc_redirect_uri_template": _dali.conf.get()["misc"]["oidc_redirect_uri_template"],
2024-09-26 19:01:05 +02:00
}
2024-09-26 16:47:01 +02:00
);
switch (preparation.kind)
{
case "internal":
{
2025-09-25 17:54:20 +02:00
target_element.innerHTML = await _dali.helpers.template_coin(
2024-09-26 16:47:01 +02:00
"login",
2024-10-01 18:28:04 +02:00
"default",
2024-09-26 16:47:01 +02:00
{
}
);
const form : lib_plankton.zoo_form.class_form<
{name : string; password : string;},
{name : string; password : string;}
> = new lib_plankton.zoo_form.class_form<
{name : string; password : string;},
{name : string; password : string;}
>(
x => x,
x => x,
new lib_plankton.zoo_input.class_input_group<
{name : string; password : string;}
>(
[
{
"name": "name",
"input": new lib_plankton.zoo_input.class_input_text(),
"label": lib_plankton.translate.get("page.login.internal.name"),
},
{
"name": "password",
"input": new lib_plankton.zoo_input.class_input_password(),
"label": lib_plankton.translate.get("page.login.internal.password"),
},
]
),
[
{
"label": lib_plankton.translate.get("page.login.internal.do"),
"target": "submit",
"procedure": async (get_value, get_representation) => {
const value : any = await get_value();
try
{
2025-09-25 17:54:20 +02:00
await _dali.backend.session_begin(
2024-09-26 16:47:01 +02:00
value.name,
value.password
);
lib_plankton.zoo_page.nav_set_groups(["logged_in"]);
2024-09-26 16:47:01 +02:00
lib_plankton.zoo_page.set(
{
"name": "overview",
2024-09-26 16:47:01 +02:00
"parameters": {}
}
);
}
catch (error)
{
2024-09-26 16:47:01 +02:00
lib_plankton.zoo_page.set(
{
"name": "login",
"parameters": {
"name": value.name,
}
}
);
}
}
},
]
);
await form.setup(document.querySelector("#login"));
await form.input_write(
{
"name": (parameters.name ?? ""),
"password": "",
}
);
break;
}
case "oidc":
{
2024-09-26 16:47:01 +02:00
let element_a : HTMLElement = document.createElement("a");;
element_a.textContent = lib_plankton.string.coin(
lib_plankton.translate.get("page.login.oidc.via"),
{
"title": preparation.data.label,
}
);
element_a.setAttribute("href", preparation.data.url);
target_element.innerHTML = "";
target_element.appendChild(element_a);
break;
}
default:
{
2024-09-26 16:47:01 +02:00
break;
}
}
return Promise.resolve<void>(undefined);
}
);
}