using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;
using Ban.Sdaid.Icd.Api.Endpoints.Auth.Logout;
namespace Ban.Sdaid.Icd.Ui.Pages
{
/// <summary>Технический экран выхода — очищает сессию и уводит на вход.</summary>
public class LogoutPage : IPageDocument, IFolder<UiFolder>, IHasStructuralLinks
{
public SdaidLink[] Links => new[]
{
Rel.Uses<DOC_Logout>(),
};
public string Name => "Выход";
public static string _refName = "экран «Выход»";
public string Description =>
@"Технический маршрут /logout: отзывает токен на бэкенде, очищает сессию и перенаправляет на вход. Пользователю не показывается.";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new string[0];
public static string S1_Purpose = $"""
## Назначение
Единая точка выхода. Любое действие «выйти» в приложении навигирует на `/logout`, а не зовёт
очистку сессии напрямую — так поведение выхода описано в одном месте. Шаблон пустой (или короткий
индикатор): экран существует ради эффекта, а не содержимого.
""";
public static string S2_Behavior = $"""
## Поведение
При открытии:
1. Отозвать токен на бэкенде ({nameof(Ban.Sdaid.Icd.Api.Endpoints.Auth.Logout.DOC_Logout)}).
2. Очистить сессию (токен из хранилища, профиль, claims).
3. Перейти на `/login`.
Даже если отзыв на бэке не удался, локальная сессия всё равно очищается — пользователь выходит.
Детали — {nameof(Ban.Sdaid.Icd.Arch.Tech.Angular.ADR_UI_010_Auth)}.
""";
}
}