Files
2026-10-16 01:25:50 +05:30

51 lines
1.1 KiB
Dart

class Account {
const Account({
required this.id,
required this.username,
required this.isAdmin,
required this.permissions,
});
final String id;
final String username;
final bool isAdmin;
final Map<String, dynamic> permissions;
bool get canReadSupport => isAdmin || _supportFlag('read');
bool get canWriteSupport => isAdmin || _supportFlag('write');
bool _supportFlag(String key) {
final support = permissions['support'];
if (support is Map) {
return support[key] == true;
}
return false;
}
factory Account.fromJson(Map<String, dynamic> json) {
return Account(
id: json['id']?.toString() ?? '',
username: json['username'] as String? ?? '',
isAdmin: json['isAdmin'] == true,
permissions: _stringKeyMap(json['permissions']),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'username': username,
'isAdmin': isAdmin,
'permissions': permissions,
};
}
}
Map<String, dynamic> _stringKeyMap(Object? value) {
if (value is! Map) {
return {};
}
return value.map((key, item) => MapEntry(key.toString(), item));
}