From 7dc1a29dfa6b928d565e37a52d2771d55cc2f928 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Tue, 14 Jul 2026 08:29:58 +0000 Subject: [PATCH] =?UTF-8?q?Developer=20=EC=97=AD=ED=95=A0=20Spring=20?= =?UTF-8?q?=EA=B3=A8=EA=B2=A9=20smoke=20(role-developer-live-v3-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/service/DeveloperService.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/com/example/demo/service/DeveloperService.java 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); + } +}