⟨/⟩ 65_Ui/Pages/AccessDeniedPage.cs

43 строк · в начало

using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;

namespace Ban.Sdaid.Icd.Ui.Pages
{
    /// <summary>Экран «Доступ запрещён» — куда уводят гард прав и ответ 403.</summary>
    public class AccessDeniedPage : IPageDocument, IFolder<UiFolder>
    {
        public string Name => "Доступ запрещён";

        public static string _refName = "экран «Доступ запрещён»";

        public string Description =>
            @"Куда попадает пользователь, у которого нет права на маршрут или операцию: гард прав и ответ 403 уводят сюда. Даёт выход из тупика. Маршрут /access-denied.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string S1_Purpose = $"""
            ## Назначение

            Пользователь **аутентифицирован, но не имеет права** на запрошенный маршрут или операцию. Сюда
            уводят гард прав (`ClaimGuard`) и ответ `403` от бэкенда
            ({nameof(Ban.Sdaid.Icd.Arch.Tech.Angular.ADR_UI_011_Claims)},
            {nameof(Ban.Sdaid.Icd.Arch.Tech.Angular.ADR_UI_010_Auth)}). Сессию при этом **не** очищаем: запрещено
            — не то же самое, что не аутентифицирован.
            """;

        public static string S2_Behavior = """
            ## Поведение

            Экран объясняет, что доступа нет, и даёт выход из тупика:

            - **«На главную»** — на первый доступный пользователю раздел;
            - **«Войти под другим пользователем»** — выход (`/logout`) и вход заново.

            Без этих кнопок пользователь без прав на стартовую страницу оказался бы заперт. Локализация
            текста «нужно право …» — открытый вопрос (ADR-UI-011).
            """;
    }
}