|
@@ -187,6 +187,22 @@ class PageService {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ canDeleteCompletely(creatorId, operator) {
|
|
|
|
|
+ const pageCompleteDeletionAuthority = this.crowi.configManager.getConfig('crowi', 'security:pageCompleteDeletionAuthority');
|
|
|
|
|
+ if (operator.admin) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (pageCompleteDeletionAuthority === 'anyOne' || pageCompleteDeletionAuthority == null) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (pageCompleteDeletionAuthority === 'adminAndAuthor') {
|
|
|
|
|
+ const operatorId = operator?._id;
|
|
|
|
|
+ return (operatorId != null && operatorId.equals(creatorId));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
async findPageAndMetaDataByViewer({ pageId, path, user }) {
|
|
async findPageAndMetaDataByViewer({ pageId, path, user }) {
|
|
|
|
|
|
|
|
const Page = this.crowi.model('Page');
|
|
const Page = this.crowi.model('Page');
|
|
@@ -219,7 +235,7 @@ class PageService {
|
|
|
result.isCreatable = false;
|
|
result.isCreatable = false;
|
|
|
result.isDeletable = isDeletablePage(path);
|
|
result.isDeletable = isDeletablePage(path);
|
|
|
result.isDeleted = page.isDeleted();
|
|
result.isDeleted = page.isDeleted();
|
|
|
- result.canDeleteCompletely = user != null && user.canDeleteCompletely(page.creator);
|
|
|
|
|
|
|
+ result.canDeleteCompletely = user != null && this.canDeleteCompletely(page.creator, user);
|
|
|
|
|
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|