Files
CloudHome-Ops/lib/models/user.dart

77 lines
2.3 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// 用户模型。
///
/// 字段由 [AuthService] 从真实登录响应(/sys/login)与
/// 当前用户接口(/sys/user/info)映射而来。
class User {
const User({
required this.id,
required this.account,
required this.displayName,
required this.role,
required this.token,
this.orgId = '',
this.roleId = '',
this.orgType = 0,
this.superAdmin = false,
});
/// 用户唯一标识(真实模式下取 orgId,缺省回退为账号)。
final String id;
/// 登录账号。
final String account;
/// 显示名称。
final String displayName;
/// 角色(如:运维管理员;多个角色以 `/` 连接)。
final String role;
/// 登录令牌。
final String token;
/// 当前用户所属组织 ID(用于表单默认选中)。
final String orgId;
/// 当前用户角色 ID(用于表单默认选中)。
final String roleId;
/// 当前用户所属组织类型(来自登录响应 orgType):
/// 0=平台(管理员) 1=渠道(渠道商) 2=代理商。
/// 用于按账号类别显隐功能模块(用户管理 / 渠道商管理)。
final int orgType;
/// 是否超级管理员(来自登录响应 superAdmin);为 true 视为管理员。
final bool superAdmin;
/// 序列化为 JSON(用于本地持久化)。
Map<String, dynamic> toJson() => {
'id': id,
'account': account,
'displayName': displayName,
'role': role,
'token': token,
'orgId': orgId,
'roleId': roleId,
'orgType': orgType,
'superAdmin': superAdmin,
};
/// 从 JSON 反序列化。
factory User.fromJson(Map<String, dynamic> json) => User(
id: json['id']?.toString() ?? '',
account: json['account']?.toString() ?? '',
displayName: json['displayName']?.toString() ?? '',
role: json['role']?.toString() ?? '',
token: json['token']?.toString() ?? '',
orgId: json['orgId']?.toString() ?? '',
roleId: json['roleId']?.toString() ?? '',
orgType: json['orgType'] is int
? json['orgType'] as int
: int.tryParse(json['orgType']?.toString() ?? '') ?? 0,
superAdmin: json['superAdmin'] is bool
? json['superAdmin'] as bool
: false,
);
}