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 зелёные.
58 lines
2.9 KiB
C#
58 lines
2.9 KiB
C#
namespace Deal.Modules.Tenants.Application.Models;
|
|
|
|
/// <summary>
|
|
/// Результат активации приглашения через /api/join; тексты HTTP-ошибок фиксирует слой эндпоинтов.
|
|
/// </summary>
|
|
/// <param name="Ok">true — пользователь создан, тенант (при необходимости) создан и приглашение активировано.</param>
|
|
/// <param name="Error">Код ошибки (<see cref="ErrorNotFound"/>/<see cref="ErrorExpired"/>/<see cref="ErrorUsed"/>/ <see cref="ErrorRevoked"/>/<see cref="ErrorEmailMismatch"/>/<see cref="ErrorEmailTaken"/>/ <see cref="ErrorPasswordTooShort"/>) или null при успехе.</param>
|
|
/// <param name="Login">Нормализованный email (логин пользователя) при Ok=true; иначе null.</param>
|
|
/// <param name="UserId">Идентификатор созданного пользователя при Ok=true (для аудита invite_activated); иначе null.</param>
|
|
/// <param name="TenantId">Тенант пользователя при Ok=true (существующий из инвайта или созданный); иначе null.</param>
|
|
public sealed record JoinResultDto(bool Ok, string? Error, string? Login, Guid? UserId, Guid? TenantId)
|
|
{
|
|
/// <summary>
|
|
/// Ошибка: приглашение с таким кодом не найдено
|
|
/// </summary>
|
|
public const string ErrorNotFound = "notFound";
|
|
|
|
/// <summary>
|
|
/// Ошибка: срок действия приглашения истёк
|
|
/// </summary>
|
|
public const string ErrorExpired = "expired";
|
|
|
|
/// <summary>
|
|
/// Ошибка: приглашение уже активировано
|
|
/// </summary>
|
|
public const string ErrorUsed = "used";
|
|
|
|
/// <summary>
|
|
/// Ошибка: приглашение отозвано оператором.
|
|
/// </summary>
|
|
public const string ErrorRevoked = "revoked";
|
|
|
|
/// <summary>
|
|
/// Ошибка: email запроса не совпадает с email приглашения.
|
|
/// </summary>
|
|
public const string ErrorEmailMismatch = "emailMismatch";
|
|
|
|
/// <summary>
|
|
/// Ошибка: пользователь с таким email
|
|
/// </summary>
|
|
public const string ErrorEmailTaken = "emailTaken";
|
|
|
|
/// <summary>
|
|
/// Ошибка: пароль пустой или короче <see cref="AuthService.MinNewPasswordLength"/> символов.
|
|
/// </summary>
|
|
public const string ErrorPasswordTooShort = "passwordTooShort";
|
|
|
|
/// <summary>
|
|
/// Ошибка: целевой тенант инвайта не существует
|
|
/// </summary>
|
|
public const string ErrorTenantNotFound = "tenantNotFound";
|
|
|
|
/// <summary>
|
|
/// Ошибка: целевой тенант инвайта приостановлен
|
|
/// </summary>
|
|
public const string ErrorTenantSuspended = "tenantSuspended";
|
|
}
|