using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;
using Ban.Sdaid.Icd.Api.Endpoints.Auth.LoginByPassword;
namespace Ban.Sdaid.Icd.Ui.Pages
{
/// <summary>Экран входа — форма логина и пароля, второй режим layout (без оболочки).</summary>
public class LoginPage : IPageDocument, IFolder<UiFolder>, IHasStructuralLinks
{
public SdaidLink[] Links => new[]
{
Rel.Uses<DOC_LoginByPassword>(),
};
public string Name => "Вход";
public static string _refName = "экран «Вход»";
public string Description =>
@"Точка входа неаутентифицированного пользователя: форма логина и пароля на упрощённом layout без шапки и меню. Маршрут /login.";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new string[0];
public static string S1_Layout = $"""
## Раскладка
Экран входа — **второй режим layout, без оболочки** (нет шапки, меню, зоны профиля): пока
пользователь не вошёл, навигация Сервиса ему недоступна. Основной layout
({nameof(Ban.Sdaid.Icd.Arch.Tech.Angular.ADR_UI_005_Layout)}) здесь не применяется.
По центру — карточка с формой; всё остальное пусто. Маршрут `/login`.
""";
public static string S2_Form = """
## Форма
Два поля — логин и пароль (оба обязательны), на Signal Forms. Кнопка «Войти» неактивна, пока
форма невалидна или идёт отправка. Ошибка входа показывается под формой одним сообщением —
текст приходит от бэкенда (UI его не сочиняет и не переводит), без подсказки, что именно
неверно (логин или пароль).
""";
public static string S3_Behavior = $"""
## Поведение
- Если пользователь уже аутентифицирован и открыл `/login` — редирект на главную (иначе после
входа была бы петля).
- На отправку — вход ({nameof(Ban.Sdaid.Icd.Api.Endpoints.Auth.LoginByPassword.DOC_LoginByPassword)}):
при успехе токен сохраняется, грузится профиль, редирект на исходный маршрут или главную; при
ошибке — сообщение под формой.
- Состояния: обычное, отправка, ошибка.
Сессия, хранение токена и загрузка профиля — {nameof(Ban.Sdaid.Icd.Arch.Tech.Angular.ADR_UI_010_Auth)}.
""";
}
}