59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
using System.Collections.Generic;
|
||
using System.Text.Json.Serialization;
|
||
|
||
namespace TakeoutSaaS.Application.Identity.Contracts;
|
||
|
||
/// <summary>
|
||
/// 菜单前端元数据。
|
||
/// </summary>
|
||
public sealed record MenuMetaDto
|
||
{
|
||
/// <summary>
|
||
/// 菜单标题(i18n key)。
|
||
/// </summary>
|
||
[JsonPropertyName("title")]
|
||
public required string Title { get; init; }
|
||
|
||
/// <summary>
|
||
/// 图标标识。
|
||
/// </summary>
|
||
[JsonPropertyName("icon")]
|
||
public string? Icon { get; init; }
|
||
|
||
/// <summary>
|
||
/// 是否缓存页面。
|
||
/// </summary>
|
||
[JsonPropertyName("keepAlive")]
|
||
public bool KeepAlive { get; init; }
|
||
|
||
/// <summary>
|
||
/// 是否为 iframe 页面。
|
||
/// </summary>
|
||
[JsonPropertyName("isIframe")]
|
||
public bool IsIframe { get; init; }
|
||
|
||
/// <summary>
|
||
/// 外链或 iframe 地址。
|
||
/// </summary>
|
||
[JsonPropertyName("link")]
|
||
public string? Link { get; init; }
|
||
|
||
/// <summary>
|
||
/// 允许访问的角色编码集合。
|
||
/// </summary>
|
||
[JsonPropertyName("roles")]
|
||
public string[] Roles { get; init; } = System.Array.Empty<string>();
|
||
|
||
/// <summary>
|
||
/// 按钮/操作级别权限。
|
||
/// </summary>
|
||
[JsonPropertyName("authList")]
|
||
public IReadOnlyList<MenuAuthItemDto> AuthList { get; init; } = System.Array.Empty<MenuAuthItemDto>();
|
||
|
||
/// <summary>
|
||
/// 访问该菜单所需的权限编码集合(前端用于路由级鉴权)。
|
||
/// </summary>
|
||
[JsonPropertyName("permissions")]
|
||
public string[] Permissions { get; init; } = System.Array.Empty<string>();
|
||
}
|