42 lines
1.3 KiB
Java
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);
|
|
}
|
|
}
|
|
|