Files
admin-panel/src/main/java/ru/soune/nocopy/adminpanel/permission/PermissionChecker.java
T
2026-05-07 15:24:25 +07:00

42 lines
1.3 KiB
Java

package ru.soune.nocopy.adminpanel.permission;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import ru.soune.nocopy.adminpanel.entity.AdminSection;
import ru.soune.nocopy.adminpanel.entity.AdminUser;
import ru.soune.nocopy.adminpanel.service.AdminSectionPermissionService;
@Component
@RequiredArgsConstructor
public class PermissionChecker {
private final AdminSectionPermissionService sectionPermissionService;
public boolean isSuperAdmin(AdminUser admin) {
if (admin == null || !admin.getIsActive()) return false;
return AdminPermission.isSuperAdmin(admin.getPermissions());
}
public void checkSuperAdmin(AdminUser admin) {
if (!isSuperAdmin(admin)) {
throw new SecurityException("Super admin permission required");
}
}
public boolean canReadSection(AdminUser admin, AdminSection section) {
if (admin == null || !admin.getIsActive()) return false;
if (isSuperAdmin(admin)) return true;
return sectionPermissionService.canRead(admin.getId(), section);
}
public boolean canWriteSection(AdminUser admin, AdminSection section) {
if (admin == null || !admin.getIsActive()) return false;
if (isSuperAdmin(admin)) return true;
return sectionPermissionService.canWrite(admin.getId(), section);
}
}