package com.ttstd.signaling.model;

/**
 * 已鉴权主体：由服务端在握手/请求鉴权阶段裁定，客户端无法自行声明。
 *
 * @param principalType 主体类型（用户 / 设备）
 * @param principalId   主体 ID（userId 或 deviceUid）
 * @param deviceId      在信令网络中的寻址 ID（服务端下发，不接受客户端自报）
 * @param deviceType    信令角色（CONTROLLER / CONTROLLED）
 * @param sessionId     登录会话 ID，用于精准踢线
 * @param displayName   展示名（用户名 / 设备型号），仅用于日志与管理后台
 */
public record AuthPrincipal(
        PrincipalType principalType,
        String principalId,
        String deviceId,
        DeviceType deviceType,
        String sessionId,
        String displayName) {

    public boolean isUser() {
        return principalType == PrincipalType.USER;
    }

    public boolean isDevice() {
        return principalType == PrincipalType.DEVICE;
    }
}
