diff --git a/src/main/java/com/example/demo/service/DeveloperService.java b/src/main/java/com/example/demo/service/DeveloperService.java new file mode 100644 index 0000000..8fde18e --- /dev/null +++ b/src/main/java/com/example/demo/service/DeveloperService.java @@ -0,0 +1,37 @@ +package com.example.demo.service; + +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +@Service +public class DeveloperService { + + private final Map roleMatrix = new HashMap<>(); + + public DeveloperService() { + roleMatrix.put("developer", "read-write"); + roleMatrix.put("viewer", "read-only"); + roleMatrix.put("admin", "full-access"); + } + + public String getRolePermission(String role) { + return roleMatrix.getOrDefault(role.toLowerCase(), "no-access"); + } + + public List getAllRoles() { + return List.copyOf(roleMatrix.keySet()); + } + + public boolean hasPermission(String role, String requiredPermission) { + String permission = getRolePermission(role); + if ("full-access".equals(permission)) { + return true; + } + if ("read-write".equals(permission)) { + return !"delete".equals(requiredPermission); + } + return "read".equals(requiredPermission); + } +}