Access checks

Former-commit-id: 31d6b6c434
pull/10/head
Jens Pelzetter 2021-02-03 17:16:34 +01:00
parent c1bcd77b03
commit af0b0c12a0
1 changed files with 17 additions and 132 deletions

View File

@ -5,7 +5,6 @@
*/ */
package org.librecms.ui.contentsections; package org.librecms.ui.contentsections;
import com.arsdigita.cms.ui.folder.FolderPath;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -193,6 +192,13 @@ public class DocumentFolderController {
); );
if (folderResult.isPresent()) { if (folderResult.isPresent()) {
folder = folderResult.get(); folder = folderResult.get();
if (!permissionChecker.isPermitted(
ItemPrivileges.EDIT, folder
)) {
models.put("sectionidentifier", sectionIdentifier);
models.put("folderPath", folderPath);
return "org/librecms/ui/contentsection/access-denied.xhtml";
}
final List<DocumentFolderBreadcrumbModel> breadcrumbs final List<DocumentFolderBreadcrumbModel> breadcrumbs
= new ArrayList<>(); = new ArrayList<>();
final List<String> tokens = Arrays final List<String> tokens = Arrays
@ -416,6 +422,14 @@ public class DocumentFolderController {
if (sectionResult.isPresent()) { if (sectionResult.isPresent()) {
final ContentSection section = sectionResult.get(); final ContentSection section = sectionResult.get();
if (!permissionChecker.isPermitted(
ItemPrivileges.EDIT, section.getRootDocumentsFolder()
)) {
models.put("sectionidentifier", sectionIdentifier);
models.put("folderPath", parentFolderPath);
return "org/librecms/ui/contentsection/access-denied.xhtml";
}
final Folder parentFolder; final Folder parentFolder;
if (parentFolderPath.isEmpty()) { if (parentFolderPath.isEmpty()) {
@ -454,6 +468,8 @@ public class DocumentFolderController {
return "org/librecms/ui/contentsection/contentsection-not-found.xhtml"; return "org/librecms/ui/contentsection/contentsection-not-found.xhtml";
} }
} }
private List<FolderTreeNode> buildFolderTree( private List<FolderTreeNode> buildFolderTree(
final ContentSection section, final Folder currentFolder final ContentSection section, final Folder currentFolder
@ -635,135 +651,4 @@ public class DocumentFolderController {
return row; return row;
} }
// private DocumentFolderRowModel buildRowModel(
// final ContentSection section, final CcmObject object
// ) {
// Objects.requireNonNull(section);
// Objects.requireNonNull(object);
// if (object instanceof ContentItem) {
// return buildRowModel(section, (ContentItem) object);
// } else if (object instanceof Folder) {
// return buildRowModel(section, (Folder) object);
// } else {
// final DocumentFolderRowModel row = new DocumentFolderRowModel();
//
// row.setCreated("");
// row.setDeletable(false);
// row.setIsFolder(false);
// row.setLanguages(Collections.emptySortedSet());
// row.setLastEditPublished(false);
// row.setLastEdited("");
// row.setName(object.getDisplayName());
// row.setTitle("");
// row.setType(object.getClass().getSimpleName());
//
// return row;
// }
// }
//
// private DocumentFolderRowModel buildRowModel(
// final ContentSection section, final ContentItem contentItem
// ) {
// Objects.requireNonNull(section);
// Objects.requireNonNull(contentItem);
//
// final DocumentFolderRowModel row = new DocumentFolderRowModel();
// row.setCreated(
// DateTimeFormatter.ISO_DATE.format(
// LocalDate.ofInstant(
// contentItem.getCreationDate().toInstant(),
// ZoneId.systemDefault()
// )
// )
// );
// row.setDeletable(!itemManager.isLive(contentItem));
// row.setIsFolder(false);
// row.setLanguages(
// new TreeSet<>(
// itemL10NManager
// .availableLanguages(contentItem)
// .stream()
// .map(Locale::toString)
// .collect(Collectors.toSet())
// )
// );
// if (itemManager.isLive(contentItem)) {
// final LocalDate draftLastModified = LocalDate.ofInstant(
// contentItem.getLastModified().toInstant(),
// ZoneId.systemDefault()
// );
// final LocalDate liveLastModified = LocalDate.ofInstant(
// itemManager
// .getLiveVersion(contentItem, contentItem.getClass())
// .map(ContentItem::getLastModified)
// .map(Date::toInstant)
// .get(),
// ZoneId.systemDefault()
// );
// row.setLastEditPublished(
// liveLastModified.isBefore(draftLastModified)
// );
//
// } else {
// row.setLastEditPublished(false);
// }
//
// row.setLastEdited(
// DateTimeFormatter.ISO_DATE.format(
// LocalDate.ofInstant(
// contentItem.getLastModified().toInstant(),
// ZoneId.systemDefault()
// )
// )
// );
// row.setName(contentItem.getDisplayName());
// row.setNoneCmsObject(false);
// row.setTitle(
// globalizationHelper.getValueFromLocalizedString(
// contentItem.getTitle()
// )
// );
// row.setType(
// contentTypeRepo
// .findByContentSectionAndClass(section, contentItem.getClass())
// .map(ContentType::getLabel)
// .map(
// label -> globalizationHelper.getValueFromLocalizedString(
// label
// )
// ).orElse("?")
// );
//
// return row;
// }
//
// private DocumentFolderRowModel buildRowModel(
// final ContentSection section, final Folder folder
// ) {
// Objects.requireNonNull(section);
// Objects.requireNonNull(folder);
//
// final DocumentFolderRowModel row = new DocumentFolderRowModel();
// row.setCreated("");
// row.setDeletable(
// folderManager.folderIsDeletable(folder)
// == FolderManager.FolderIsDeletable.YES
// );
// row.setIsFolder(true);
// row.setLanguages(Collections.emptySortedSet());
// row.setLastEditPublished(false);
// row.setLastEdited("");
// row.setName(folder.getDisplayName());
// row.setNoneCmsObject(false);
// row.setTitle(
// globalizationHelper.getValueFromLocalizedString(folder.getTitle())
// );
// row.setType(
// globalizationHelper.getLocalizedTextsUtil(
// "org.librecms.CmsAdminMessages"
// ).getText("contentsection.documentfolder.types.folder")
// );
//
// return row;
// }
} }