Reviewer 역할 검증 보고서 smoke (runtime-role-matrix-live-20260714101723-v7-reviewer-001)
This commit is contained in:
parent
f51456868b
commit
be4d2414a8
1 changed files with 80 additions and 0 deletions
80
src/main/java/com/klaroworks/runtime/role/RoleContext.java
Normal file
80
src/main/java/com/klaroworks/runtime/role/RoleContext.java
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
package com.klaroworks.runtime.role;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Role context interface for role-based access control.
|
||||||
|
* Used by RoleMatrixRuntimeTest for context management testing.
|
||||||
|
*/
|
||||||
|
public interface RoleContext {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current user ID.
|
||||||
|
* @return user identifier
|
||||||
|
*/
|
||||||
|
String getUserId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current role.
|
||||||
|
* @return role name
|
||||||
|
*/
|
||||||
|
String getRole();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get permissions associated with this context.
|
||||||
|
* @return immutable map of permissions
|
||||||
|
*/
|
||||||
|
Map<String, Boolean> getPermissions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a specific permission is granted.
|
||||||
|
* @param permission permission key
|
||||||
|
* @return true if granted
|
||||||
|
*/
|
||||||
|
boolean hasPermission(String permission);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple implementation of RoleContext.
|
||||||
|
*/
|
||||||
|
class SimpleRoleContext implements RoleContext {
|
||||||
|
private final String userId;
|
||||||
|
private final String role;
|
||||||
|
private final Map<String, Boolean> permissions;
|
||||||
|
|
||||||
|
public SimpleRoleContext(String userId, String role, Map<String, Boolean> permissions) {
|
||||||
|
this.userId = userId;
|
||||||
|
this.role = role;
|
||||||
|
this.permissions = permissions != null ? Collections.unmodifiableMap(new HashMap<>(permissions)) : Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getRole() {
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Boolean> getPermissions() {
|
||||||
|
return permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(String permission) {
|
||||||
|
return permissions.getOrDefault(permission, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleRoleContext of(String userId, String role) {
|
||||||
|
return new SimpleRoleContext(userId, role, Map.of(
|
||||||
|
"read", true,
|
||||||
|
"write", role.equals("ADMIN") || role.equals("MANAGER"),
|
||||||
|
"delete", role.equals("ADMIN")
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue