diff --git a/frontend/src/app/core/common/enum/permission.enum.ts b/frontend/src/app/core/common/enum/permission.enum.ts
index dc951eb59..11fead2d6 100644
--- a/frontend/src/app/core/common/enum/permission.enum.ts
+++ b/frontend/src/app/core/common/enum/permission.enum.ts
@@ -14,6 +14,7 @@ export enum AppPermission {
PublicSendContactSupport = "PublicSendContactSupport",
PublicBrowseReferenceType = "PublicBrowseReferenceType",
PublicClonePlan = "PublicClonePlan",
+ PublicCloneDescription = "PublicCloneDescription",
//Elastic
ManageElastic = "ManageElastic",
//Queue Events
diff --git a/frontend/src/app/ui/description/overview/description-overview.component.html b/frontend/src/app/ui/description/overview/description-overview.component.html
index 1724a0fb3..d8c2235a8 100644
--- a/frontend/src/app/ui/description/overview/description-overview.component.html
+++ b/frontend/src/app/ui/description/overview/description-overview.component.html
@@ -56,7 +56,7 @@
-
+
diff --git a/frontend/src/app/ui/description/overview/description-overview.component.ts b/frontend/src/app/ui/description/overview/description-overview.component.ts
index 668c65e5d..0d214348e 100644
--- a/frontend/src/app/ui/description/overview/description-overview.component.ts
+++ b/frontend/src/app/ui/description/overview/description-overview.component.ts
@@ -68,6 +68,7 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni
fileTransformerEntityTypeEnum = FileTransformerEntityType;
canEdit = false;
+ canCopy = false;
canDelete = false;
canFinalize = false;
canReview = false;
@@ -109,6 +110,7 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni
this.canDelete = false;
this.canEdit = false;
+ this.canCopy = false;
this.canFinalize = false;
this.canInvitePlanUsers = false;
// Gets description data using parameter id
@@ -134,6 +136,8 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni
this.canEdit = (this.authService.hasPermission(AppPermission.EditDescription) ||
this.description.authorizationFlags?.some(x => x === AppPermission.EditDescription)) && this.description.belongsToCurrentTenant != false;
+
+ this.canCopy = this.canEdit || (this.authService.hasPermission(AppPermission.PublicCloneDescription) && this.isPublicView);
this.canReview = (this.authService.hasPermission(AppPermission.ReviewDescription) ||
this.description.authorizationFlags?.some(x => x === AppPermission.ReviewDescription)) && this.description.belongsToCurrentTenant != false;
@@ -162,6 +166,8 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni
this.descriptionService.getPublicSingle(publicId, this.lookupFields())
.pipe(takeUntil(this._destroyed))
.subscribe(data => {
+ this.canCopy = this.authService.hasPermission(AppPermission.PublicCloneDescription) && this.isPublicView;
+
this.breadcrumbService.addExcludedParam('public', true);
this.breadcrumbService.addIdResolvedValue(data.id.toString(), data.label);
diff --git a/frontend/src/app/ui/plan/overview/plan-overview.component.ts b/frontend/src/app/ui/plan/overview/plan-overview.component.ts
index ce9a10200..5879385bd 100644
--- a/frontend/src/app/ui/plan/overview/plan-overview.component.ts
+++ b/frontend/src/app/ui/plan/overview/plan-overview.component.ts
@@ -255,7 +255,7 @@ export class PlanOverviewComponent extends BaseComponent implements OnInit {
}
canClonePlan(): boolean {
- return (this.plan.authorizationFlags?.some(x => x === AppPermission.ClonePlan) || this.authentication.hasPermission(AppPermission.ClonePlan));
+ return (this.plan.authorizationFlags?.some(x => x === AppPermission.ClonePlan) || this.authentication.hasPermission(AppPermission.ClonePlan) || (this.authentication.hasPermission(AppPermission.PublicClonePlan) && this.isPublicView));
}
canFinalizePlan(): boolean {