From fce44c9fbb7ad313466462b14436f0afd4d82aee Mon Sep 17 00:00:00 2001 From: "konrad.lys@eu.equinix.com" Date: Sun, 28 May 2023 10:50:03 +0200 Subject: [PATCH] FEATURE fix permissions model --- packages/mock_server/fixtures/documents.json | 55 +++++++++++++++++-- .../lib/config/hive/hive_type_ids.dart | 1 + .../src/models/permissions/permissions.dart | 5 +- .../users_and_groups_permissions.dart | 17 ++++++ 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 packages/paperless_api/lib/src/models/permissions/users_and_groups_permissions.dart diff --git a/packages/mock_server/fixtures/documents.json b/packages/mock_server/fixtures/documents.json index c63e957..87bc3a4 100644 --- a/packages/mock_server/fixtures/documents.json +++ b/packages/mock_server/fixtures/documents.json @@ -22,7 +22,16 @@ "archived_file_name": "2022-03-22 no latin title.pdf", "owner": null, "user_can_change": true, - + "permissions": { + "view": { + "users": [], + "groups": [] + }, + "change": { + "users": [], + "groups": [] + } + }, "notes": [ { "id": 9, @@ -61,7 +70,16 @@ "archived_file_name": "2022-03-23 llorem ipsum dolor sit amet.pdf", "owner": null, "user_can_change": true, - + "permissions": { + "view": { + "users": [], + "groups": [] + }, + "change": { + "users": [], + "groups": [] + } + }, "notes": [] }, { @@ -83,7 +101,16 @@ "archived_file_name": "2022-03-24 dolor.pdf", "owner": null, "user_can_change": true, - + "permissions": { + "view": { + "users": [], + "groups": [] + }, + "change": { + "users": [], + "groups": [] + } + }, "notes": [] }, { @@ -105,7 +132,16 @@ "archived_file_name": "2022-06-01 sit amet.pdf", "owner": null, "user_can_change": true, - + "permissions": { + "view": { + "users": [], + "groups": [] + }, + "change": { + "users": [], + "groups": [] + } + }, "notes": [] }, { @@ -125,7 +161,16 @@ "archived_file_name": "doc5.pdf", "owner": 15, "user_can_change": true, - + "permissions": { + "view": { + "users": [], + "groups": [] + }, + "change": { + "users": [], + "groups": [] + } + }, "notes": [] }, { diff --git a/packages/paperless_api/lib/config/hive/hive_type_ids.dart b/packages/paperless_api/lib/config/hive/hive_type_ids.dart index 3568647..a931473 100644 --- a/packages/paperless_api/lib/config/hive/hive_type_ids.dart +++ b/packages/paperless_api/lib/config/hive/hive_type_ids.dart @@ -30,6 +30,7 @@ class PaperlessApiHiveTypeIds { static const int groupModel = 124; static const int permissions = 125; static const int userModelv2 = 126; + static const int usersAndGroupsPermissions = 127; } void registerPaperlessApiHiveTypeAdapters() { diff --git a/packages/paperless_api/lib/src/models/permissions/permissions.dart b/packages/paperless_api/lib/src/models/permissions/permissions.dart index ea0d489..3530f8b 100644 --- a/packages/paperless_api/lib/src/models/permissions/permissions.dart +++ b/packages/paperless_api/lib/src/models/permissions/permissions.dart @@ -1,6 +1,7 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:hive/hive.dart'; import 'package:paperless_api/paperless_api.dart'; +import 'package:paperless_api/src/models/permissions/users_and_groups_permissions.dart'; part 'permissions.freezed.dart'; part 'permissions.g.dart'; @@ -9,8 +10,8 @@ part 'permissions.g.dart'; @freezed class Permissions with _$Permissions { const factory Permissions({ - @HiveField(0) @Default([]) List view, - @HiveField(1) @Default([]) List change, + @HiveField(0) required UsersAndGroupsPermissions view, + @HiveField(1) required UsersAndGroupsPermissions change, }) = _Permissions; factory Permissions.fromJson(Map json) => _$PermissionsFromJson(json); diff --git a/packages/paperless_api/lib/src/models/permissions/users_and_groups_permissions.dart b/packages/paperless_api/lib/src/models/permissions/users_and_groups_permissions.dart new file mode 100644 index 0000000..326005e --- /dev/null +++ b/packages/paperless_api/lib/src/models/permissions/users_and_groups_permissions.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:hive/hive.dart'; +import 'package:paperless_api/paperless_api.dart'; + +part 'users_and_groups_permissions.freezed.dart'; +part 'users_and_groups_permissions.g.dart'; + +@HiveType(typeId: PaperlessApiHiveTypeIds.usersAndGroupsPermissions) +@freezed +class UsersAndGroupsPermissions with _$UsersAndGroupsPermissions { + const factory UsersAndGroupsPermissions({ + @HiveField(0) @Default([]) List users, + @HiveField(1) @Default([]) List groups, + }) = _UsersAndGroupsPermissions; + + factory UsersAndGroupsPermissions.fromJson(Map json) => _$UsersAndGroupsPermissionsFromJson(json); +}