2023-08-13 01:12:29 +01:00
|
|
|
package stirling.software.SPDF.model;
|
2023-12-30 19:11:27 +00:00
|
|
|
|
2024-03-06 23:14:02 +01:00
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2023-08-13 10:53:00 +01:00
|
|
|
public enum Role {
|
2023-12-30 19:11:27 +00:00
|
|
|
|
2023-08-13 10:53:00 +01:00
|
|
|
// Unlimited access
|
2024-03-06 23:14:02 +01:00
|
|
|
ADMIN("ROLE_ADMIN", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.admin"),
|
2023-08-13 10:53:00 +01:00
|
|
|
|
|
|
|
// Unlimited access
|
2024-03-06 23:14:02 +01:00
|
|
|
USER("ROLE_USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.user"),
|
2023-08-13 10:53:00 +01:00
|
|
|
|
|
|
|
// 40 API calls Per Day, 40 web calls
|
2024-03-06 23:14:02 +01:00
|
|
|
LIMITED_API_USER("ROLE_LIMITED_API_USER", 40, 40, "adminUserSettings.apiUser"),
|
2023-08-13 10:53:00 +01:00
|
|
|
|
|
|
|
// 20 API calls Per Day, 20 web calls
|
2024-03-06 23:14:02 +01:00
|
|
|
EXTRA_LIMITED_API_USER("ROLE_EXTRA_LIMITED_API_USER", 20, 20, "adminUserSettings.extraApiUser"),
|
2023-08-13 10:53:00 +01:00
|
|
|
|
|
|
|
// 0 API calls per day and 20 web calls
|
2024-03-06 23:14:02 +01:00
|
|
|
WEB_ONLY_USER("ROLE_WEB_ONLY_USER", 0, 20, "adminUserSettings.webOnlyUser"),
|
2023-08-13 10:53:00 +01:00
|
|
|
|
2024-03-06 23:14:02 +01:00
|
|
|
INTERNAL_API_USER("STIRLING-PDF-BACKEND-API-USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.internalApiUser"),
|
2023-12-30 19:11:27 +00:00
|
|
|
|
2024-03-06 23:14:02 +01:00
|
|
|
DEMO_USER("ROLE_DEMO_USER", 100, 100, "adminUserSettings.demoUser");
|
2023-12-30 19:11:27 +00:00
|
|
|
|
2023-08-13 10:53:00 +01:00
|
|
|
private final String roleId;
|
|
|
|
private final int apiCallsPerDay;
|
|
|
|
private final int webCallsPerDay;
|
2024-03-06 23:14:02 +01:00
|
|
|
private final String roleName;
|
2023-08-13 10:53:00 +01:00
|
|
|
|
2024-03-06 23:14:02 +01:00
|
|
|
Role(String roleId, int apiCallsPerDay, int webCallsPerDay, String roleName) {
|
2023-08-13 10:53:00 +01:00
|
|
|
this.roleId = roleId;
|
|
|
|
this.apiCallsPerDay = apiCallsPerDay;
|
|
|
|
this.webCallsPerDay = webCallsPerDay;
|
2024-03-06 23:14:02 +01:00
|
|
|
this.roleName = roleName;
|
2023-08-13 10:53:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getRoleId() {
|
|
|
|
return roleId;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getApiCallsPerDay() {
|
|
|
|
return apiCallsPerDay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getWebCallsPerDay() {
|
|
|
|
return webCallsPerDay;
|
|
|
|
}
|
2023-12-30 19:11:27 +00:00
|
|
|
|
2024-03-06 23:14:02 +01:00
|
|
|
public String getRoleName() {
|
|
|
|
return roleName;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static String getRoleNameByRoleId(String roleId) {
|
|
|
|
// Using the fromString method to get the Role enum based on the roleId
|
|
|
|
Role role = fromString(roleId);
|
|
|
|
// Return the roleName of the found Role enum
|
|
|
|
return role.getRoleName();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Method to retrieve all role IDs and role names
|
|
|
|
public static Map<String, String> getAllRoleDetails() {
|
|
|
|
// Using LinkedHashMap to preserve order
|
|
|
|
Map<String, String> roleDetails = new LinkedHashMap<>();
|
|
|
|
for (Role role : Role.values()) {
|
|
|
|
roleDetails.put(role.getRoleId(), role.getRoleName());
|
|
|
|
}
|
|
|
|
return roleDetails;
|
|
|
|
}
|
|
|
|
|
2023-08-13 22:46:18 +01:00
|
|
|
public static Role fromString(String roleId) {
|
|
|
|
for (Role role : Role.values()) {
|
|
|
|
if (role.getRoleId().equalsIgnoreCase(roleId)) {
|
|
|
|
return role;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
throw new IllegalArgumentException("No Role defined for id: " + roleId);
|
|
|
|
}
|
2023-08-13 01:12:29 +01:00
|
|
|
}
|