[Developer] #424 implement VPD ORDS backoffice

Refs #424
This commit is contained in:
devmrko
2026-06-23 11:04:46 +09:00
parent 5cc8026538
commit 7b45b3a028
64 changed files with 2247 additions and 5 deletions

View File

@@ -0,0 +1,12 @@
package com.cloudhandson.vpdbackoffice.domain.audit;
public record AuditEvent(
String eventType,
Long keyId,
Long objectId,
String status,
Integer rowCount,
String errorCode,
String message
) {
}

View File

@@ -0,0 +1,8 @@
package com.cloudhandson.vpdbackoffice.domain.permission;
public record AppRole(
long roleId,
String roleName,
String description
) {
}

View File

@@ -0,0 +1,9 @@
package com.cloudhandson.vpdbackoffice.domain.permission;
public record PermissionRule(
long ruleId,
long permissionId,
String ruleType,
String ruleValue
) {
}

View File

@@ -0,0 +1,13 @@
package com.cloudhandson.vpdbackoffice.domain.permission;
import java.util.List;
public record PermissionSet(
long permissionId,
long roleId,
long objectId,
String action,
List<PermissionRule> rules,
List<String> visibleColumns
) {
}

View File

@@ -0,0 +1,15 @@
package com.cloudhandson.vpdbackoffice.domain.permission;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Positive;
import java.util.List;
public record PermissionSetCommand(
@Positive long roleId,
@Positive long objectId,
@NotBlank String action,
@NotEmpty List<RuleCommand> rules,
List<String> visibleColumns
) {
}

View File

@@ -0,0 +1,9 @@
package com.cloudhandson.vpdbackoffice.domain.permission;
import jakarta.validation.constraints.NotBlank;
public record RuleCommand(
@NotBlank String ruleType,
String ruleValue
) {
}

View File

@@ -0,0 +1,14 @@
package com.cloudhandson.vpdbackoffice.domain.probe;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Positive;
public record ProbeCommand(
@Positive long keyId,
@Positive long objectId,
@NotBlank String bearerToken,
@Min(1) @Max(500) int limit
) {
}

View File

@@ -0,0 +1,19 @@
package com.cloudhandson.vpdbackoffice.domain.probe;
import java.util.List;
import java.util.Map;
public record ProbeResult(
ProbeStatus status,
List<String> columns,
List<Map<String, Object>> rows,
int rowCount,
List<String> maskedColumns,
String errorCode,
String errorMessage
) {
public static ProbeResult blocked(ProbeStatus status, String errorCode, String errorMessage) {
return new ProbeResult(status, List.of(), List.of(), 0, List.of(), errorCode, errorMessage);
}
}

View File

@@ -0,0 +1,14 @@
package com.cloudhandson.vpdbackoffice.domain.probe;
public enum ProbeStatus {
SUCCESS,
VPD_DENY_EMPTY_RESULT,
TOKEN_NOT_FOUND,
TOKEN_INACTIVE,
OBJECT_DISABLED,
INVALID_TOKEN,
OBJECT_NOT_ACCESSIBLE,
ORDS_TIMEOUT,
INVALID_ORDS_RESPONSE,
UNKNOWN_ERROR
}

View File

@@ -0,0 +1,14 @@
package com.cloudhandson.vpdbackoffice.domain.protectedobject;
public record ProtectedColumn(
long columnId,
long objectId,
String columnName,
String sensitiveYn,
Long visibleRoleId
) {
public boolean sensitive() {
return "Y".equalsIgnoreCase(sensitiveYn);
}
}

View File

@@ -0,0 +1,18 @@
package com.cloudhandson.vpdbackoffice.domain.protectedobject;
public record ProtectedObject(
long objectId,
String owner,
String objectName,
String ordsPath,
String enabledYn
) {
public boolean enabled() {
return "Y".equalsIgnoreCase(enabledYn);
}
public String displayName() {
return owner + "." + objectName;
}
}

View File

@@ -0,0 +1,19 @@
package com.cloudhandson.vpdbackoffice.domain.token;
import java.time.OffsetDateTime;
public record BearerTokenRecord(
long keyId,
long userId,
String username,
String keyPrefix,
String keyHash,
OffsetDateTime expiresAt,
OffsetDateTime revokedAt,
String description
) {
public boolean active(OffsetDateTime now) {
return revokedAt == null && expiresAt != null && expiresAt.isAfter(now);
}
}

View File

@@ -0,0 +1,11 @@
package com.cloudhandson.vpdbackoffice.domain.token;
import java.time.OffsetDateTime;
public record IssuedToken(
long keyId,
String prefix,
String plainToken,
OffsetDateTime expiresAt
) {
}

View File

@@ -0,0 +1,13 @@
package com.cloudhandson.vpdbackoffice.domain.token;
import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import java.time.OffsetDateTime;
public record TokenIssueCommand(
@Positive long userId,
@Future OffsetDateTime expiresAt,
@Size(max = 200) String description
) {
}

View File

@@ -0,0 +1,14 @@
package com.cloudhandson.vpdbackoffice.domain.user;
public record AppUser(
long userId,
String username,
String empNo,
String deptCode,
String activeYn
) {
public boolean active() {
return "Y".equalsIgnoreCase(activeYn);
}
}