Skip to content

Commit 0d3097e

Browse files
committed
feat: implement premium user role
- Added premium user role - Defined premium permissions - Added premium limits
1 parent eb3aecd commit 0d3097e

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

lib/src/rbac/role_permissions.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ final Set<String> _standardUserPermissions = {
2121
Permissions.userDeleteOwned,
2222
};
2323

24+
// For now, premium users have the same permissions as standard users,
25+
// but this set can be expanded later for premium-specific features.
26+
final Set<String> _premiumUserPermissions = {
27+
..._standardUserPermissions,
28+
};
29+
2430
final Set<String> _adminPermissions = {
2531
..._standardUserPermissions,
2632
Permissions.headlineCreate,
@@ -54,5 +60,6 @@ final Set<String> _adminPermissions = {
5460
final Map<UserRole, Set<String>> rolePermissions = {
5561
UserRole.guestUser: _guestUserPermissions,
5662
UserRole.standardUser: _standardUserPermissions,
63+
UserRole.premiumUser: _premiumUserPermissions, // Added premium user
5764
UserRole.admin: _adminPermissions,
5865
};

lib/src/services/default_user_preference_limit_service.dart

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,15 @@ class DefaultUserPreferenceLimitService implements UserPreferenceLimitService {
4646
// Applies to countries, sources, categories
4747
limit = limits.authenticatedFollowedItemsLimit;
4848
}
49+
case UserRole.premiumUser:
50+
if (itemType == 'headline') {
51+
limit = limits.premiumSavedHeadlinesLimit;
52+
} else {
53+
limit = limits.premiumFollowedItemsLimit;
54+
}
4955
case UserRole.admin:
5056
// Admins have no limits
5157
return;
52-
// Add premium user case when implemented
53-
// case UserRole.premiumUser:
54-
// if (itemType == 'headline') {
55-
// limit = limits.premiumSavedHeadlinesLimit;
56-
// } else {
57-
// limit = limits.premiumFollowedItemsLimit;
58-
// }
5958
}
6059

6160
// 3. Check if adding the item would exceed the limit
@@ -100,13 +99,12 @@ class DefaultUserPreferenceLimitService implements UserPreferenceLimitService {
10099
case UserRole.standardUser:
101100
followedItemsLimit = limits.authenticatedFollowedItemsLimit;
102101
savedHeadlinesLimit = limits.authenticatedSavedHeadlinesLimit;
102+
case UserRole.premiumUser:
103+
followedItemsLimit = limits.premiumFollowedItemsLimit;
104+
savedHeadlinesLimit = limits.premiumSavedHeadlinesLimit;
103105
case UserRole.admin:
104106
// Admins have no limits
105107
return;
106-
// Add premium user case when implemented
107-
// case UserRole.premiumUser:
108-
// followedItemsLimit = limits.premiumFollowedItemsLimit;
109-
// savedHeadlinesLimit = limits.premiumSavedHeadlinesLimit;
110108
}
111109

112110
// 3. Check if proposed preferences exceed limits

lib/src/services/jwt_auth_token_service.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ String _userRoleToString(UserRole role) {
1414
UserRole.admin => 'admin',
1515
UserRole.standardUser => 'standard_user',
1616
UserRole.guestUser => 'guest_user',
17+
UserRole.premiumUser => 'premium_user', // Added premium user
1718
};
1819
}
1920

0 commit comments

Comments
 (0)