diff --git a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts index b7f4d2629..0aed0cdd0 100644 --- a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts @@ -199,6 +199,7 @@ export class DescriptionListingComponent extends BaseComponent implements OnInit nameof(x => x.label), nameof(x => x.status), nameof(x => x.updatedAt), + nameof(x => x.belongsToCurrentTenant), [nameof(x => x.authorizationFlags), AppPermission.EditDescription].join('.'), diff --git a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts index 89046c430..3edaa4574 100644 --- a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts @@ -85,14 +85,14 @@ export class DescriptionListingItemComponent extends BaseComponent implements On this.setIsUserOwner(); } - this.canDelete = this.authService.hasPermission(AppPermission.DeleteDescription) || - this.description.authorizationFlags?.some(x => x === AppPermission.DeleteDescription); + this.canDelete = (this.authService.hasPermission(AppPermission.DeleteDescription) || + this.description.authorizationFlags?.some(x => x === AppPermission.DeleteDescription)) && this.description.belongsToCurrentTenant != false; - this.canEdit = this.authService.hasPermission(AppPermission.EditDescription) || - this.description.authorizationFlags?.some(x => x === AppPermission.EditDescription); + this.canEdit = (this.authService.hasPermission(AppPermission.EditDescription) || + this.description.authorizationFlags?.some(x => x === AppPermission.EditDescription)) && this.description.belongsToCurrentTenant != false; - this.canInviteDmpUsers = this.authService.hasPermission(AppPermission.InviteDmpUsers) || - this.description.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers); + this.canInviteDmpUsers = (this.authService.hasPermission(AppPermission.InviteDmpUsers) || + this.description.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers)) && this.description.belongsToCurrentTenant != false; } diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html index e77269d3e..4c98718df 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html @@ -110,7 +110,7 @@
horizontal_rule -
+
@@ -190,4 +190,4 @@
- \ No newline at end of file + diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts b/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts index 9ec336dfd..eb486cb67 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts @@ -115,17 +115,17 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni this.researchers = this.referenceService.getReferencesForTypes(this.description?.dmp?.dmpReferences, [this.referenceTypeService.getResearcherReferenceType()]); // this.users = this.description.dmp.users; this.checkLockStatus(this.description.id); - this.canDelete = this.authService.hasPermission(AppPermission.DeleteDescription) || - this.description.authorizationFlags?.some(x => x === AppPermission.DeleteDescription); + this.canDelete = (this.authService.hasPermission(AppPermission.DeleteDescription) || + this.description.authorizationFlags?.some(x => x === AppPermission.DeleteDescription)) && this.description.belongsToCurrentTenant != false; - this.canEdit = this.authService.hasPermission(AppPermission.EditDescription) || - this.description.authorizationFlags?.some(x => x === AppPermission.EditDescription); + this.canEdit = (this.authService.hasPermission(AppPermission.EditDescription) || + this.description.authorizationFlags?.some(x => x === AppPermission.EditDescription)) && this.description.belongsToCurrentTenant != false; - this.canFinalize = this.authService.hasPermission(AppPermission.FinalizeDescription) || - this.description.authorizationFlags?.some(x => x === AppPermission.FinalizeDescription); + this.canFinalize = (this.authService.hasPermission(AppPermission.FinalizeDescription) || + this.description.authorizationFlags?.some(x => x === AppPermission.FinalizeDescription)) && this.description.belongsToCurrentTenant != false; - this.canInviteDmpUsers = this.authService.hasPermission(AppPermission.InviteDmpUsers) || - this.description.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers); + this.canInviteDmpUsers = (this.authService.hasPermission(AppPermission.InviteDmpUsers) || + this.description.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers)) && this.description.belongsToCurrentTenant != false; // const breadCrumbs = []; // breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DESCRIPTION-DESCRIPTIONS'), url: "/descriptions" }); // breadCrumbs.push({ parentComponentName: 'DescriptionListingComponent', label: this.description.label, url: '/descriptions/overview/' + this.description.id }); @@ -470,6 +470,7 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni nameof(x => x.description), nameof(x => x.status), nameof(x => x.updatedAt), + nameof(x => x.belongsToCurrentTenant), nameof(x => x.hash), [nameof(x => x.authorizationFlags), AppPermission.EditDescription].join('.'), diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index fe506000d..c5614bbd2 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -187,6 +187,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr nameof(x => x.version), nameof(x => x.groupId), nameof(x => x.updatedAt), + nameof(x => x.belongsToCurrentTenant), nameof(x => x.hash), [nameof(x => x.authorizationFlags), AppPermission.CreateNewVersionDmp].join('.'), [nameof(x => x.authorizationFlags), AppPermission.DeleteDmp].join('.'), diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts index d79398185..8d5209089 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts @@ -216,17 +216,17 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { onDeleteCallbackError(error) { this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-DELETE'), SnackBarNotificationLevel.Error); } - + canEditDmp(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.EditDmp) || this.authentication.hasPermission(AppPermission.EditDmp)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.EditDmp) || this.authentication.hasPermission(AppPermission.EditDmp)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } canCreateNewVersion(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.CreateNewVersionDmp) || this.authentication.hasPermission(AppPermission.CreateNewVersionDmp)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.CreateNewVersionDmp) || this.authentication.hasPermission(AppPermission.CreateNewVersionDmp)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } canDeleteDmp(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.DeleteDmp) || this.authentication.hasPermission(AppPermission.DeleteDmp)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.DeleteDmp) || this.authentication.hasPermission(AppPermission.DeleteDmp)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } canCloneDmp(dmp: Dmp): boolean { @@ -234,7 +234,7 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { } canFinalizeDmp(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.FinalizeDmp) || this.authentication.hasPermission(AppPermission.FinalizeDmp)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.FinalizeDmp) || this.authentication.hasPermission(AppPermission.FinalizeDmp)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } canExportDmp(dmp: Dmp): boolean { @@ -242,10 +242,10 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { } canInviteDmpUsers(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers) || this.authentication.hasPermission(AppPermission.InviteDmpUsers)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers) || this.authentication.hasPermission(AppPermission.InviteDmpUsers)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } canAssignDmpUsers(dmp: Dmp): boolean { - return (this.dmp.authorizationFlags?.some(x => x === AppPermission.AssignDmpUsers) || this.authentication.hasPermission(AppPermission.AssignDmpUsers)) && this.isPublic == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.AssignDmpUsers) || this.authentication.hasPermission(AppPermission.AssignDmpUsers)) && this.isPublic == false && this.dmp.belongsToCurrentTenant != false; } } diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index fd6dffdbb..848a79c14 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -241,7 +241,7 @@ -
+
- \ No newline at end of file + diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index 7876d0801..94fcfe2bd 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -212,39 +212,39 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { } canEditDmp(): boolean{ - return (this.isDraftDmp()) && (this.dmp.authorizationFlags?.some(x => x === AppPermission.EditDmp) || this.authentication.hasPermission(AppPermission.EditDmp)) && this.isPublicView == false; + return (this.isDraftDmp()) && (this.dmp.authorizationFlags?.some(x => x === AppPermission.EditDmp) || this.authentication.hasPermission(AppPermission.EditDmp)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canCreateNewVersion(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.CreateNewVersionDmp) || this.authentication.hasPermission(AppPermission.CreateNewVersionDmp) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.CreateNewVersionDmp) || this.authentication.hasPermission(AppPermission.CreateNewVersionDmp)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canDeleteDmp(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.DeleteDmp) || this.authentication.hasPermission(AppPermission.DeleteDmp) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.DeleteDmp) || this.authentication.hasPermission(AppPermission.DeleteDmp)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canCloneDmp(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.CloneDmp) || this.authentication.hasPermission(AppPermission.CloneDmp); + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.CloneDmp) || this.authentication.hasPermission(AppPermission.CloneDmp)); } canFinalizeDmp(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.FinalizeDmp) || this.authentication.hasPermission(AppPermission.FinalizeDmp) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.FinalizeDmp) || this.authentication.hasPermission(AppPermission.FinalizeDmp)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canExportDmp(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.ExportDmp) || this.authentication.hasPermission(AppPermission.ExportDmp); + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.ExportDmp) || this.authentication.hasPermission(AppPermission.ExportDmp)); } canInviteDmpUsers(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers) || this.authentication.hasPermission(AppPermission.InviteDmpUsers) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.InviteDmpUsers) || this.authentication.hasPermission(AppPermission.InviteDmpUsers)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canAssignDmpUsers(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.AssignDmpUsers) || this.authentication.hasPermission(AppPermission.AssignDmpUsers) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.AssignDmpUsers) || this.authentication.hasPermission(AppPermission.AssignDmpUsers)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } canDepositDmp(): boolean { - return this.dmp.authorizationFlags?.some(x => x === AppPermission.DepositDmp) || this.authentication.hasPermission(AppPermission.DepositDmp) && this.isPublicView == false; + return (this.dmp.authorizationFlags?.some(x => x === AppPermission.DepositDmp) || this.authentication.hasPermission(AppPermission.DepositDmp)) && this.isPublicView == false && this.dmp.belongsToCurrentTenant != false; } @@ -742,6 +742,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { nameof(x => x.version), nameof(x => x.updatedAt), nameof(x => x.entityDois), + nameof(x => x.belongsToCurrentTenant), [nameof(x => x.authorizationFlags), AppPermission.CreateNewVersionDmp].join('.'), [nameof(x => x.authorizationFlags), AppPermission.DeleteDmp].join('.'), [nameof(x => x.authorizationFlags), AppPermission.CloneDmp].join('.'), diff --git a/dmp-frontend/src/common/base/base-editor.ts b/dmp-frontend/src/common/base/base-editor.ts index 2111040d2..67574f51d 100644 --- a/dmp-frontend/src/common/base/base-editor.ts +++ b/dmp-frontend/src/common/base/base-editor.ts @@ -76,6 +76,9 @@ export abstract class BaseEditor(x => x.createdAt), nameof(x => x.updatedAt), nameof(x => x.hash), + nameof(x => x.belongsToCurrentTenant), ]; } diff --git a/dmp-frontend/src/common/base/base-form-editor-model.ts b/dmp-frontend/src/common/base/base-form-editor-model.ts index dfb4734ff..0662d3753 100644 --- a/dmp-frontend/src/common/base/base-form-editor-model.ts +++ b/dmp-frontend/src/common/base/base-form-editor-model.ts @@ -10,6 +10,7 @@ export abstract class BaseEditorModel implements IEditorModel { hash: string; createdAt: Date; updatedAt: Date; + belongsToCurrentTenant?: boolean; public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); @@ -19,6 +20,7 @@ export abstract class BaseEditorModel implements IEditorModel { this.id = item.id; this.isActive = item.isActive; this.hash = item.hash; + this.belongsToCurrentTenant = item.belongsToCurrentTenant; if (item.createdAt) { this.createdAt = item.createdAt; } if (item.updatedAt) { this.updatedAt = item.updatedAt; } }