This commit is contained in:
Hillel Coren 2019-11-12 18:06:04 +02:00
parent 891d9fe8c1
commit f2073cefc9
2 changed files with 101 additions and 113 deletions

View File

@ -348,7 +348,6 @@ abstract class GatewayEntity extends Object
@BuiltValueField(wireName: 'default_gateway_type_id')
String get defaultGatewayTypeId;
//bool get recommended;
//bool get visible;
@ -425,6 +424,7 @@ abstract class UserCompanyEntity
bool can(UserPermission permission, EntityType entityType) =>
(isAdmin ?? false) ||
permissions.contains('${permission}_all') ||
permissions.contains('${permission}_$entityType');
bool canView(EntityType entityType) => can(UserPermission.view, entityType);

View File

@ -96,21 +96,6 @@ class _UserEditState extends State<UserEdit> {
//.onUserChanged(userCompany.rebuild((b) => b..permissions = permissions.join(',')));
}
void _togglePermissions(List<String> permissions) {
final userCompany = widget.viewModel.userCompany;
final userPermissions = (userCompany.permissions ?? '').split(',');
permissions.forEach((permission) {
if (userPermissions.contains(permission)) {
userPermissions.remove(permission);
} else {
userPermissions.add(permission);
}
});
//widget.viewModel.onUserChanged(
//userCompany.rebuild((b) => b..permissions = userPermissions.join(',')));
}
@override
Widget build(BuildContext context) {
final viewModel = widget.viewModel;
@ -199,104 +184,107 @@ class _UserEditState extends State<UserEdit> {
),
],
),
FormCard(
child: DataTable(
columns: [
DataColumn(
label: SizedBox(),
),
DataColumn(
label: Text(localization.create),
),
DataColumn(
label: Text(localization.view),
),
DataColumn(
label: Text(localization.edit),
),
],
rows: [
DataRow(cells: [
DataCell(Text(localization.all), onTap: () {
_togglePermissions([
kPermissionCreateAll,
kPermissionViewAll,
kPermissionEditAll
if (!userCompany.isAdmin)
FormCard(
child: DataTable(
columns: [
DataColumn(
label: SizedBox(),
),
DataColumn(
label: Text(localization.create),
),
DataColumn(
label: Text(localization.view),
),
DataColumn(
label: Text(localization.edit),
),
],
rows: [
DataRow(cells: [
DataCell(Text(localization.all)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionCreateAll,
onChanged: (value) =>
_togglePermission(kPermissionCreateAll),
),
onTap: () => _togglePermission(kPermissionCreateAll)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionViewAll,
onChanged: (value) =>
_togglePermission(kPermissionViewAll),
),
onTap: () => _togglePermission(kPermissionViewAll)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionEditAll,
onChanged: (value) =>
_togglePermission(kPermissionEditAll),
),
onTap: () => _togglePermission(kPermissionEditAll)),
]),
...<EntityType>[
EntityType.client,
EntityType.product,
EntityType.invoice,
EntityType.payment,
EntityType.quote,
].map((EntityType type) {
final createPermission = 'create_' + toSnakeCase('$type');
final editPermission = 'edit_' + toSnakeCase('$type');
final viewPermission = 'view_' + toSnakeCase('$type');
return DataRow(cells: [
DataCell(Text(localization.lookup('$type'))),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: createPermission,
onChanged: (value) =>
_togglePermission(createPermission),
checkAll: userCompany.permissions
.contains(kPermissionCreateAll),
),
onTap: userCompany.permissions
.contains(kPermissionCreateAll)
? null
: () => _togglePermission(createPermission)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: viewPermission,
onChanged: (value) =>
_togglePermission(viewPermission),
checkAll: userCompany.permissions
.contains(kPermissionViewAll),
),
onTap: userCompany.permissions
.contains(kPermissionViewAll)
? null
: () => _togglePermission(viewPermission)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: editPermission,
onChanged: (value) =>
_togglePermission(editPermission),
checkAll: userCompany.permissions
.contains(kPermissionEditAll),
),
onTap: userCompany.permissions
.contains(kPermissionEditAll)
? null
: () => _togglePermission(editPermission)),
]);
}),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionCreateAll,
onChanged: (value) =>
_togglePermission(kPermissionCreateAll),
),
onTap: () => _togglePermission(kPermissionCreateAll)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionViewAll,
onChanged: (value) =>
_togglePermission(kPermissionViewAll),
),
onTap: () => _togglePermission(kPermissionViewAll)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: kPermissionEditAll,
onChanged: (value) =>
_togglePermission(kPermissionEditAll),
),
onTap: () => _togglePermission(kPermissionEditAll)),
]),
...<EntityType>[
EntityType.client,
EntityType.product,
EntityType.invoice,
EntityType.payment,
EntityType.quote,
].map((EntityType type) {
final createPermission = 'create_' + toSnakeCase('$type');
final editPermission = 'edit_' + toSnakeCase('$type');
final viewPermission = 'view_' + toSnakeCase('$type');
return DataRow(cells: [
DataCell(Text(localization.lookup('$type')), onTap: () {
_togglePermissions([
createPermission,
viewPermission,
editPermission,
]);
}),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: createPermission,
onChanged: (value) =>
_togglePermission(createPermission),
//checkAll: ,
),
onTap: () => _togglePermission(createPermission)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: viewPermission,
onChanged: (value) =>
_togglePermission(viewPermission),
),
onTap: () => _togglePermission(viewPermission)),
DataCell(
_PermissionCheckbox(
userCompany: userCompany,
permission: editPermission,
onChanged: (value) =>
_togglePermission(editPermission),
),
onTap: () => _togglePermission(editPermission)),
]);
}).toList()
],
),
)
}).toList()
],
),
)
],
),
),