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); } }