2026-09-16 18:02:02 -03:00
|
|
|
using Data.SeaHavenIndustries.Enums;
|
|
|
|
|
|
|
|
|
|
namespace SeaHaven.Services.DTOs;
|
|
|
|
|
|
|
|
|
|
public sealed class TeamPermissionProfileDTO
|
|
|
|
|
{
|
|
|
|
|
public required string UserId { get; init; }
|
|
|
|
|
public string? RoleName { get; init; }
|
|
|
|
|
public required IReadOnlyList<TeamPermissionValueDTO> Permissions { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed class TeamPermissionValueDTO
|
|
|
|
|
{
|
|
|
|
|
public required string PermissionKey { get; init; }
|
|
|
|
|
public UserPermissionState OverrideState { get; init; }
|
|
|
|
|
public bool IsGranted { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-25 12:03:35 -03:00
|
|
|
public sealed class EffectivePermissionsDTO
|
|
|
|
|
{
|
|
|
|
|
public required IReadOnlyList<string> Permissions { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-16 18:02:02 -03:00
|
|
|
public sealed class SetTeamPermissionOverrideDTO
|
|
|
|
|
{
|
|
|
|
|
public UserPermissionState State { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum TeamPermissionResultStatus
|
|
|
|
|
{
|
|
|
|
|
Success,
|
2026-09-25 12:03:35 -03:00
|
|
|
Unauthorized,
|
2026-09-16 18:02:02 -03:00
|
|
|
Forbidden,
|
|
|
|
|
NotFound,
|
|
|
|
|
InvalidPermissionKey
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed class TeamPermissionResult<T>
|
|
|
|
|
{
|
|
|
|
|
private TeamPermissionResult(TeamPermissionResultStatus status, T? value)
|
|
|
|
|
{
|
|
|
|
|
Status = status;
|
|
|
|
|
Value = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public TeamPermissionResultStatus Status { get; }
|
|
|
|
|
public T? Value { get; }
|
|
|
|
|
public bool IsSuccess => Status == TeamPermissionResultStatus.Success;
|
|
|
|
|
|
|
|
|
|
public static TeamPermissionResult<T> Success(T value) =>
|
|
|
|
|
new(TeamPermissionResultStatus.Success, value);
|
|
|
|
|
|
|
|
|
|
public static TeamPermissionResult<T> Failure(TeamPermissionResultStatus status) =>
|
|
|
|
|
new(status, default);
|
|
|
|
|
}
|