feat:Update search

This commit is contained in:
Anton Stubenbord
2023-05-18 18:23:47 +02:00
parent 062c46ccd3
commit c9a6bc64b8
21 changed files with 385 additions and 210 deletions

View File

@@ -29,3 +29,4 @@ export 'permissions/user_permissions.dart';
export 'permissions/inherited_permissions.dart';
export 'group_model.dart';
export 'user_model.dart';
export 'permissions/user_permission_extension.dart';

View File

@@ -0,0 +1,14 @@
import 'package:paperless_api/paperless_api.dart';
extension UserPermissionExtension on UserModel {
bool hasPermission(PermissionAction action, PermissionTarget target) {
return map(
v3: (user) {
final permission = [action.value, target.value].join("_");
return user.userPermissions.any((element) => element == permission) ||
user.inheritedPermissions.any((element) => element.split(".").last == permission);
},
v2: (_) => true,
);
}
}

View File

@@ -3,7 +3,6 @@
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hive/hive.dart';
import 'package:paperless_api/config/hive/hive_type_ids.dart';
import 'package:paperless_api/src/models/permissions/user_permissions.dart';
part 'user_model.freezed.dart';
part 'user_model.g.dart';
@@ -42,29 +41,17 @@ class UserModel with _$UserModel {
String? get fullName => map(
v2: (value) => value.displayName,
v3: (value) {
if (value.firstName == null && value.lastName == null) {
bool hasFirstName = value.firstName?.trim().isNotEmpty ?? false;
bool hasLastName = value.lastName?.trim().isNotEmpty ?? false;
if (hasFirstName && hasLastName) {
return "${value.firstName!} ${value.lastName!}";
} else if (hasFirstName) {
return value.firstName!;
} else if (hasLastName) {
return value.lastName;
} else {
return null;
}
if (value.firstName == null) {
return value.lastName;
}
return "${value.firstName!} ${value.lastName ?? ''}";
},
);
bool hasPermission(PermissionAction action, PermissionTarget target) {
return map(
v3: (value) {
if (value.isSuperuser) {
return true;
}
final permissionIdentifier = "${action.value}_${target.value}";
return value.userPermissions.contains(permissionIdentifier);
},
v2: (value) {
// In previous versions, all users have all permissions.
return true;
},
);
}
}