using FoodLabeling.Application.Contracts.Dtos.AuthSession;
using Volo.Abp.Application.Services;
namespace FoodLabeling.Application.Contracts.IServices;
///
/// 当前登录会话:菜单权限与退出(美国版 Web 管理端)
///
public interface IAuthSessionAppService : IApplicationService
{
///
/// 获取当前登录用户的角色编码、权限码与可见菜单树
///
///
/// 非 SaaS(EnabledSaasMultiTenancy=false)且用户名为 admin 时返回全部未删除菜单(与 AccountService.GetVue3Router 行为对齐)。
/// SaaS 开启时:平台主库登录(JWT / __tenant 无业务租户 Id,含全 0)即使用户名为 admin 也仅返回平台菜单
/// (PermissionCode 以 menu.platform 开头或 Router 以 /platform 开头,含祖先节点以成树);
/// 公司业务租户登录时即使用户名为 admin 也按 RoleMenu 关联查询,与 UpdateCompanyMenus 同步的管理员菜单权限一致。
/// 返回体额外包含:userId(当前登录用户 Id,与 user.id 一致,非租户 Id)、lastUpdated(系统编辑全局时间戳,与任意写接口成功联动;无戳时回退用户 LastModificationTime)、role(角色展示名,多角色英文逗号拼接)、fullName(姓名优先,其次昵称、用户名)。
/// 角色名通过 Role 表直查(RoleDbEntity),避免走仓储 IDataPermission。
///
/// 用户简要信息、权限码与菜单树
/// 成功
/// 未登录或令牌无效
/// 服务器错误
Task GetMyMenusAsync();
///
/// 退出登录:清除服务端用户信息缓存(JWT 仍由前端丢弃)
///
///
/// 与框架 AccountService.PostLogout 一致;未登录时返回 false。
///
/// 是否执行了缓存清理(已登录为 true)
/// 成功
/// 服务器错误
Task LogoutAsync();
}