package com.baiyue.common.security; import java.security.Principal; import java.util.Set; /** * 统一认证用户主体,携带用户、租户、成员身份、应用端、客户端类型及权限信息。 */ public record AuthenticatedUser(Long userId, Long tenantId, Long operatorTenantId, Long membershipId, String username, String appCode, String clientType, Set permissions, boolean impersonated, Long actorUserId, Long actorMembershipId, boolean passwordChangeRequired, Long overseasWarehouseId) implements Principal { public AuthenticatedUser(Long userId, Long tenantId, Long operatorTenantId, Long membershipId, String username, String appCode, String clientType, Set permissions) { this(userId, tenantId, operatorTenantId, membershipId, username, appCode, clientType, permissions, false, null, null, false, null); } public AuthenticatedUser(Long userId, Long tenantId, Long operatorTenantId, Long membershipId, String username, String appCode, String clientType, Set permissions, boolean impersonated, Long actorUserId, Long actorMembershipId, boolean passwordChangeRequired) { this(userId, tenantId, operatorTenantId, membershipId, username, appCode, clientType, permissions, impersonated, actorUserId, actorMembershipId, passwordChangeRequired, null); } public AuthenticatedUser { permissions = permissions == null ? Set.of() : Set.copyOf(permissions); } @Override public String getName() { return username; } }