init
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user