Files
admin-panel/src/main/java/ru/soune/nocopy/adminpanel/permission/PermissionChecker.java
T

42 lines
1.3 KiB
Java
Raw Normal View History

2026-04-08 11:17:08 +07:00
package ru.soune.nocopy.adminpanel.permission;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
2026-05-07 15:24:25 +07:00
import ru.soune.nocopy.adminpanel.entity.AdminSection;
2026-04-08 11:17:08 +07:00
import ru.soune.nocopy.adminpanel.entity.AdminUser;
2026-05-07 15:24:25 +07:00
import ru.soune.nocopy.adminpanel.service.AdminSectionPermissionService;
2026-04-08 11:17:08 +07:00
@Component
@RequiredArgsConstructor
public class PermissionChecker {
2026-05-07 15:24:25 +07:00
private final AdminSectionPermissionService sectionPermissionService;
2026-04-08 11:17:08 +07:00
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");
}
}
2026-05-07 15:24:25 +07:00
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);
}
2026-04-08 11:17:08 +07:00
}
2026-05-07 15:24:25 +07:00