ci / build-test (push) Canceled after 0s
SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
45 lines
2.2 KiB
C#
45 lines
2.2 KiB
C#
namespace Deal.Modules.Tenants.Application.Models;
|
||
|
||
/// <summary>
|
||
/// Результат impersonation.
|
||
/// </summary>
|
||
/// <param name="Ok">true — сессия impersonation создана.</param>
|
||
/// <param name="Error">Код ошибки при Ok=false (см. константы); null при успехе.</param>
|
||
/// <param name="SessionToken">Raw-токен tenant-сессии (значение куки deal_session); null при Ok=false.</param>
|
||
/// <param name="ExpiresAt">Момент истечения сессии (30 дней от создания, как у обычного входа).</param>
|
||
/// <param name="Login">Логин пользователя, под которым выполнен вход; null при Ok=false.</param>
|
||
/// <param name="UserId">Идентификатор пользователя (для аудита); null при Ok=false.</param>
|
||
/// <param name="TenantId">Тенант пользователя; null при Ok=false.</param>
|
||
public sealed record ImpersonationResultDto(
|
||
bool Ok,
|
||
string? Error,
|
||
string? SessionToken,
|
||
DateTimeOffset? ExpiresAt,
|
||
string? Login,
|
||
Guid? UserId,
|
||
Guid? TenantId)
|
||
{
|
||
/// <summary>
|
||
/// Код ошибки: тенант не найден
|
||
/// </summary>
|
||
public const string ErrorTenantNotFound = "tenant_not_found";
|
||
|
||
/// <summary>
|
||
/// Код ошибки: в тенанте нет пользователей, а login не указан
|
||
/// </summary>
|
||
public const string ErrorTenantHasNoUsers = "tenant_has_no_users";
|
||
|
||
/// <summary>
|
||
/// Код ошибки: пользователь с таким login не найден в тенанте
|
||
/// </summary>
|
||
public const string ErrorUserNotFound = "user_not_found";
|
||
|
||
/// <summary>
|
||
/// Неуспешный результат без полезной нагрузки.
|
||
/// </summary>
|
||
/// <param name="error">Код ошибки (см. константы).</param>
|
||
/// <returns>ImpersonationResultDto с Ok=false.</returns>
|
||
public static ImpersonationResultDto Failed(string error) =>
|
||
new(Ok: false, Error: error, SessionToken: null, ExpiresAt: null, Login: null, UserId: null, TenantId: null);
|
||
}
|