DocumentAuthorizationService.java
package com.tdmconsult.ete.documents;
import com.tdmconsult.ete.configuration.CustomJwtAuthenticationToken;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class DocumentAuthorizationService {
private final FinancialDocumentRepository financialDocumentRepository;
public static final String AUTH_FINANCIAL_DOCUMENT_SHOW = "ete:financial_document_show";
public static final String AUTH_FINANCIAL_DOCUMENT_SHOW_OWN = "ete:financial_document_show_own";
public static final String AUTH_FINANCIAL_DOCUMENT_EDIT = "ete:financial_document_edit";
public static final String AUTH_FINANCIAL_DOCUMENT_EDIT_OWN = "ete:financial_document_edit_own";
public boolean isAllowedToCreateDocument(final CustomJwtAuthenticationToken.CustomUserPrincipal userDetails) {
return userDetails.hasAuthority("ete:financial_document_upload");
}
public boolean isAllowedToListDocuments(final CustomJwtAuthenticationToken.CustomUserPrincipal userDetails) {
final var show = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_SHOW);
final var showOwnOnly = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_SHOW_OWN);
return show || showOwnOnly;
}
public boolean isAllowedToShowDocument(
final String publicId,
final CustomJwtAuthenticationToken.CustomUserPrincipal userDetails) {
final var show = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_SHOW);
final var showOwnOnly = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_SHOW_OWN);
return show || (showOwnOnly && financialDocumentRepository.isUploadBy(publicId, userDetails));
}
public boolean isAllowedToEditDocument(
final String publicId,
final CustomJwtAuthenticationToken.CustomUserPrincipal userDetails) {
final var edit = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_EDIT);
final var editOwnOnly = userDetails.hasAuthority(AUTH_FINANCIAL_DOCUMENT_EDIT_OWN);
return edit || (editOwnOnly && financialDocumentRepository.isUploadBy(publicId, userDetails));
}
}