Skip to content

Commit dd5af06

Browse files
committed
refactor: Replaces the old string-based role-to-permission mapping with a new Map<Enum, Set<String>>. This map uses the AppUserRole and DashboardUserRole enums as keys, directly linking the new user model structure to the RBAC system
1 parent c09c3b3 commit dd5af06

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

lib/src/rbac/role_permissions.dart

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,70 @@
11
import 'package:ht_api/src/rbac/permissions.dart';
22
import 'package:ht_shared/ht_shared.dart';
33

4-
final Set<String> _guestUserPermissions = {
4+
// --- App Role Permissions ---
5+
6+
final Set<String> _appGuestUserPermissions = {
57
Permissions.headlineRead,
6-
Permissions.categoryRead,
8+
Permissions.topicRead,
79
Permissions.sourceRead,
810
Permissions.countryRead,
9-
Permissions.appSettingsReadOwned,
10-
Permissions.appSettingsUpdateOwned,
11-
Permissions.userPreferencesReadOwned,
12-
Permissions.userPreferencesUpdateOwned,
13-
Permissions.appConfigRead,
11+
Permissions.userAppSettingsReadOwned,
12+
Permissions.userAppSettingsUpdateOwned,
13+
Permissions.userContentPreferencesReadOwned,
14+
Permissions.userContentPreferencesUpdateOwned,
15+
Permissions.remoteConfigRead,
1416
};
1517

16-
final Set<String> _standardUserPermissions = {
17-
..._guestUserPermissions,
18+
final Set<String> _appStandardUserPermissions = {
19+
..._appGuestUserPermissions,
1820
Permissions.userReadOwned,
1921
Permissions.userUpdateOwned,
2022
Permissions.userDeleteOwned,
2123
};
2224

23-
// For now, premium users have the same permissions as standard users,
24-
// but this set can be expanded later for premium-specific features.
25-
final Set<String> _premiumUserPermissions = {..._standardUserPermissions};
25+
final Set<String> _appPremiumUserPermissions = {
26+
..._appStandardUserPermissions,
27+
// Future premium-only permissions can be added here.
28+
};
29+
30+
// --- Dashboard Role Permissions ---
2631

27-
final Set<String> _publisherPermissions = {
28-
..._standardUserPermissions,
32+
final Set<String> _dashboardPublisherPermissions = {
2933
Permissions.headlineCreate,
3034
Permissions.headlineUpdate,
3135
Permissions.headlineDelete,
3236
};
3337

34-
final Set<String> _adminPermissions = {
35-
..._standardUserPermissions,
36-
Permissions.headlineCreate,
37-
Permissions.headlineUpdate,
38-
Permissions.headlineDelete,
39-
Permissions.categoryCreate,
40-
Permissions.categoryUpdate,
41-
Permissions.categoryDelete,
38+
final Set<String> _dashboardAdminPermissions = {
39+
..._dashboardPublisherPermissions,
40+
Permissions.topicCreate,
41+
Permissions.topicUpdate,
42+
Permissions.topicDelete,
4243
Permissions.sourceCreate,
4344
Permissions.sourceUpdate,
4445
Permissions.sourceDelete,
4546
Permissions.countryCreate,
4647
Permissions.countryUpdate,
4748
Permissions.countryDelete,
48-
Permissions.userRead,
49-
Permissions.appConfigCreate,
50-
Permissions.appConfigUpdate,
51-
Permissions.appConfigDelete,
49+
Permissions.userRead, // Allows reading any user's profile
50+
Permissions.remoteConfigCreate,
51+
Permissions.remoteConfigUpdate,
52+
Permissions.remoteConfigDelete,
5253
};
5354

54-
/// Defines the mapping between user roles and the permissions they possess.
55-
///
56-
/// This map is the core of the Role-Based Access Control (RBAC) system.
57-
/// Each key is a role string, and the associated value is a [Set] of
58-
/// [Permissions] strings that users with that role are granted.
55+
/// Defines the mapping between user roles (both app and dashboard) and the
56+
/// permissions they possess.
5957
///
60-
/// Note: Administrators typically have implicit access to all resources
61-
/// regardless of this map, but including their permissions here can aid
62-
/// documentation and clarity. The `PermissionService` should handle the
63-
/// explicit admin bypass if desired.
64-
final Map<String, Set<String>> rolePermissions = {
65-
UserRoles.guestUser: _guestUserPermissions,
66-
UserRoles.standardUser: _standardUserPermissions,
67-
UserRoles.premiumUser: _premiumUserPermissions,
68-
UserRoles.publisher: _publisherPermissions,
69-
UserRoles.admin: _adminPermissions,
58+
/// The `PermissionService` will look up a user's `appRole` and
59+
/// `dashboardRole` in this map and combine the resulting permission sets to
60+
/// determine their total access rights.
61+
final Map<Enum, Set<String>> rolePermissions = {
62+
// App Roles
63+
AppUserRole.guestUser: _appGuestUserPermissions,
64+
AppUserRole.standardUser: _appStandardUserPermissions,
65+
AppUserRole.premiumUser: _appPremiumUserPermissions,
66+
// Dashboard Roles
67+
DashboardUserRole.none: {},
68+
DashboardUserRole.publisher: _dashboardPublisherPermissions,
69+
DashboardUser-Role.admin: _dashboardAdminPermissions,
7070
};

0 commit comments

Comments
 (0)