From 435c8f083bdd73ecacd8bbf42c706f1bc190e873 Mon Sep 17 00:00:00 2001 From: Simon Larsen Date: Thu, 18 May 2023 13:03:40 +0100 Subject: [PATCH] add ownership email columns --- Common/Types/Email/EmailTemplateType.ts | 14 +++++++ Mail/Templates/IncidentOwnerCreated.hbs | 0 Mail/Templates/IncidentOwnerNotePosted.hbs | 0 .../IncidentOwnerResourceCreated.hbs | 0 Mail/Templates/IncidentOwnerStateChanged.hbs | 0 Mail/Templates/MonitorOwnerCreated.hbs | 0 .../Templates/MonitorOwnerResourceCreated.hbs | 0 Mail/Templates/MonitorOwnerStatusChanged.hbs | 0 Mail/Templates/Partials/OwnerInfo.hbs | 6 +++ Mail/Templates/Partials/TitleBlock.hbs | 29 +++++++++++++ .../ScheduledMaintenanceOwnerNotePosted.hbs | 0 ...heduledMaintenanceOwnerResourceCreated.hbs | 0 .../ScheduledMaintenanceOwnerStateChanged.hbs | 0 .../StatusPageOwnerAnnouncementCreated.hbs | 0 Mail/Templates/StatusPageOwnerCreated.hbs | 0 .../StatusPageOwnerResourceCreated.hbs | 0 Model/Models/Incident.ts | 37 ++++++++++++++++- Model/Models/IncidentInternalNote.ts | 30 ++++++++++++++ Model/Models/IncidentOwnerTeam.ts | 29 +++++++++++++ Model/Models/IncidentOwnerUser.ts | 29 +++++++++++++ Model/Models/IncidentPublicNote.ts | 37 ++++++++++++++++- Model/Models/IncidentStateTimeline.ts | 37 ++++++++++++++++- Model/Models/Monitor.ts | 30 ++++++++++++++ Model/Models/MonitorOwnerTeam.ts | 29 +++++++++++++ Model/Models/MonitorOwnerUser.ts | 29 +++++++++++++ Model/Models/MonitorStatusTimeline.ts | 30 ++++++++++++++ Model/Models/ScheduledMaintenance.ts | 37 ++++++++++++++++- .../ScheduledMaintenanceInternalNote.ts | 30 ++++++++++++++ Model/Models/ScheduledMaintenanceOwnerTeam.ts | 29 +++++++++++++ Model/Models/ScheduledMaintenanceOwnerUser.ts | 29 +++++++++++++ .../Models/ScheduledMaintenancePublicNote.ts | 37 ++++++++++++++++- .../ScheduledMaintenanceStateTimeline.ts | 37 ++++++++++++++++- Model/Models/StatusPage.ts | 30 ++++++++++++++ Model/Models/StatusPageAnnouncement.ts | 41 ++++++++++++++++++- Model/Models/StatusPageOwnerTeam.ts | 29 +++++++++++++ Model/Models/StatusPageOwnerUser.ts | 29 +++++++++++++ 36 files changed, 687 insertions(+), 7 deletions(-) create mode 100644 Mail/Templates/IncidentOwnerCreated.hbs create mode 100644 Mail/Templates/IncidentOwnerNotePosted.hbs create mode 100644 Mail/Templates/IncidentOwnerResourceCreated.hbs create mode 100644 Mail/Templates/IncidentOwnerStateChanged.hbs create mode 100644 Mail/Templates/MonitorOwnerCreated.hbs create mode 100644 Mail/Templates/MonitorOwnerResourceCreated.hbs create mode 100644 Mail/Templates/MonitorOwnerStatusChanged.hbs create mode 100644 Mail/Templates/Partials/OwnerInfo.hbs create mode 100644 Mail/Templates/Partials/TitleBlock.hbs create mode 100644 Mail/Templates/ScheduledMaintenanceOwnerNotePosted.hbs create mode 100644 Mail/Templates/ScheduledMaintenanceOwnerResourceCreated.hbs create mode 100644 Mail/Templates/ScheduledMaintenanceOwnerStateChanged.hbs create mode 100644 Mail/Templates/StatusPageOwnerAnnouncementCreated.hbs create mode 100644 Mail/Templates/StatusPageOwnerCreated.hbs create mode 100644 Mail/Templates/StatusPageOwnerResourceCreated.hbs diff --git a/Common/Types/Email/EmailTemplateType.ts b/Common/Types/Email/EmailTemplateType.ts index 6eb3a793e4..4807295dc0 100644 --- a/Common/Types/Email/EmailTemplateType.ts +++ b/Common/Types/Email/EmailTemplateType.ts @@ -17,6 +17,20 @@ enum EmailTemplateType { StatusPageWelcomeEmail = 'StatusPageWelcomeEmail.hbs', SubscriberScheduledMaintenanceEventNoteCreated = 'SubscriberScheduledMaintenanceEventNoteCreated.hbs', SMTPTest = 'SMTPTest.hbs', + MonitorOwnerCreated = 'MonitorOwnerCreated.hbs', + MonitorOwnerResourceCreated = 'MonitorOwnerResourceCreated.hbs', + MonitorOwnerStatusChanged = 'MonitorOwnerStatusChanged.hbs', + IncidentOwnerCreated = 'IncidentOwnerCreated.hbs', + IncidentOwnerStateChanged = 'IncidentOwnerStateChanged.hbs', + IncidentOwnerNotePosted = 'IncidentOwnerNotePosted.hbs', + IncidentOwnerResourceCreated = 'IncidentOwnerResourceCreated.hbs', + ScheduledMaintenanceOwnerNotePosted = 'ScheduledMaintenanceOwnerNotePosted.hbs', + ScheduledMaintenanceOwnerCreated = 'ScheduledMaintenanceOwnerCreated.hbs', + ScheduledMaintenanceOwnerStateChanged = 'ScheduledMaintenanceOwnerStateChanged.hbs', + ScheduledMaintenanceOwnerResourceCreated = 'ScheduledMaintenanceOwnerResourceCreated.hbs', + StatusPageOwnerResourceCreated = 'StatusPageOwnerResourceCreated.hbs', + StatusPageOwnerCreated = 'StatusPageOwnerCreated.hbs', + StatusPageOwnerAnnouncementPosted = 'StatusPageOwnerAnnouncementPosted.hbs', } export default EmailTemplateType; diff --git a/Mail/Templates/IncidentOwnerCreated.hbs b/Mail/Templates/IncidentOwnerCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/IncidentOwnerNotePosted.hbs b/Mail/Templates/IncidentOwnerNotePosted.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/IncidentOwnerResourceCreated.hbs b/Mail/Templates/IncidentOwnerResourceCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/IncidentOwnerStateChanged.hbs b/Mail/Templates/IncidentOwnerStateChanged.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/MonitorOwnerCreated.hbs b/Mail/Templates/MonitorOwnerCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/MonitorOwnerResourceCreated.hbs b/Mail/Templates/MonitorOwnerResourceCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/MonitorOwnerStatusChanged.hbs b/Mail/Templates/MonitorOwnerStatusChanged.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/Partials/OwnerInfo.hbs b/Mail/Templates/Partials/OwnerInfo.hbs new file mode 100644 index 0000000000..20bf31cd88 --- /dev/null +++ b/Mail/Templates/Partials/OwnerInfo.hbs @@ -0,0 +1,6 @@ +{{> TitleBlock title="Why am I receiving this email?"}} +{{#if isOwner}} +{{> InfoBlock info="You are receiving this email because you are the owner of this resource."}} +{{else}} +{{> InfoBlock info="You are receiving this email because no owners have been added to this resource and you are the owner of the project."}} +{{/if}} \ No newline at end of file diff --git a/Mail/Templates/Partials/TitleBlock.hbs b/Mail/Templates/Partials/TitleBlock.hbs new file mode 100644 index 0000000000..197df9663b --- /dev/null +++ b/Mail/Templates/Partials/TitleBlock.hbs @@ -0,0 +1,29 @@ + + + + + + + + + + + + +
+
+
+ {{{title}}} + +
+
+
+
+ diff --git a/Mail/Templates/ScheduledMaintenanceOwnerNotePosted.hbs b/Mail/Templates/ScheduledMaintenanceOwnerNotePosted.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/ScheduledMaintenanceOwnerResourceCreated.hbs b/Mail/Templates/ScheduledMaintenanceOwnerResourceCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/ScheduledMaintenanceOwnerStateChanged.hbs b/Mail/Templates/ScheduledMaintenanceOwnerStateChanged.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/StatusPageOwnerAnnouncementCreated.hbs b/Mail/Templates/StatusPageOwnerAnnouncementCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/StatusPageOwnerCreated.hbs b/Mail/Templates/StatusPageOwnerCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Mail/Templates/StatusPageOwnerResourceCreated.hbs b/Mail/Templates/StatusPageOwnerResourceCreated.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Model/Models/Incident.ts b/Model/Models/Incident.ts index d2862b1c0f..0c0fcc0977 100644 --- a/Model/Models/Incident.ts +++ b/Model/Models/Incident.ts @@ -677,7 +677,12 @@ export default class Incident extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectIncident, + ], update: [], }) @TableColumn({ @@ -724,4 +729,34 @@ export default class Incident extends BaseModel { nullable: true, }) public customFields?: JSONObject = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateProjectIncident, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectIncident, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified Of Resource Creation?', + description: 'Are owners notified of when this resource is created?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotifiedOfResourceCreation?: ObjectID = undefined; } diff --git a/Model/Models/IncidentInternalNote.ts b/Model/Models/IncidentInternalNote.ts index 7c63d66968..e20bd08849 100644 --- a/Model/Models/IncidentInternalNote.ts +++ b/Model/Models/IncidentInternalNote.ts @@ -340,4 +340,34 @@ export default class IncidentInternalNote extends BaseModel { unique: false, }) public note?: string = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateIncidentInternalNote, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentInternalNote, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/IncidentOwnerTeam.ts b/Model/Models/IncidentOwnerTeam.ts index 57f7689bef..7f3d3eee12 100644 --- a/Model/Models/IncidentOwnerTeam.ts +++ b/Model/Models/IncidentOwnerTeam.ts @@ -376,4 +376,33 @@ export default class IncidentOwnerTeam extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateIncidentOwnerTeam, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentOwnerTeam, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/IncidentOwnerUser.ts b/Model/Models/IncidentOwnerUser.ts index 86dbc6b48e..765b54e61c 100644 --- a/Model/Models/IncidentOwnerUser.ts +++ b/Model/Models/IncidentOwnerUser.ts @@ -375,4 +375,33 @@ export default class IncidentOwnerUser extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateIncidentOwnerUser, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentOwnerUser, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/IncidentPublicNote.ts b/Model/Models/IncidentPublicNote.ts index ead742b832..0c3d7a9313 100644 --- a/Model/Models/IncidentPublicNote.ts +++ b/Model/Models/IncidentPublicNote.ts @@ -343,7 +343,12 @@ export default class IncidentPublicNote extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentPublicNote, + ], update: [], }) @TableColumn({ @@ -357,4 +362,34 @@ export default class IncidentPublicNote extends BaseModel { default: false, }) public isStatusPageSubscribersNotifiedOnNoteCreated?: boolean = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateIncidentPublicNote, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentPublicNote, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/IncidentStateTimeline.ts b/Model/Models/IncidentStateTimeline.ts index 9839caca73..f9132ec5b9 100644 --- a/Model/Models/IncidentStateTimeline.ts +++ b/Model/Models/IncidentStateTimeline.ts @@ -389,7 +389,12 @@ export default class IncidentStateTimeline extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentStateTimeline, + ], update: [], }) @TableColumn({ @@ -404,4 +409,34 @@ export default class IncidentStateTimeline extends BaseModel { default: false, }) public isStatusPageSubscribersNotified?: boolean = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateIncidentStateTimeline, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadIncidentStateTimeline, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of state change?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/Monitor.ts b/Model/Models/Monitor.ts index c9ec0114b1..ec86888402 100644 --- a/Model/Models/Monitor.ts +++ b/Model/Models/Monitor.ts @@ -608,4 +608,34 @@ export default class Monitor extends BaseModel { nullable: true, }) public customFields?: JSONObject = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateProjectMonitor, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectMonitor, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified Of Resource Creation?', + description: 'Are owners notified of when this resource is created?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotifiedOfResourceCreation?: ObjectID = undefined; } diff --git a/Model/Models/MonitorOwnerTeam.ts b/Model/Models/MonitorOwnerTeam.ts index 333031dda5..9af89ea4b7 100644 --- a/Model/Models/MonitorOwnerTeam.ts +++ b/Model/Models/MonitorOwnerTeam.ts @@ -376,4 +376,33 @@ export default class MonitorOwnerTeam extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateMonitorOwnerTeam, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadMonitorOwnerTeam, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/MonitorOwnerUser.ts b/Model/Models/MonitorOwnerUser.ts index aac890bda3..9be1e95650 100644 --- a/Model/Models/MonitorOwnerUser.ts +++ b/Model/Models/MonitorOwnerUser.ts @@ -375,4 +375,33 @@ export default class MonitorOwnerUser extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateMonitorOwnerUser, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadMonitorOwnerUser, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/MonitorStatusTimeline.ts b/Model/Models/MonitorStatusTimeline.ts index b627824538..9ea1a07382 100644 --- a/Model/Models/MonitorStatusTimeline.ts +++ b/Model/Models/MonitorStatusTimeline.ts @@ -390,4 +390,34 @@ export default class MonitorStatusTimeline extends BaseModel { transformer: ObjectID.getDatabaseTransformer(), }) public monitorStatusId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateProjectMonitor, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectMonitor, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of status change?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenance.ts b/Model/Models/ScheduledMaintenance.ts index a1dc832b4b..a108ce5f48 100644 --- a/Model/Models/ScheduledMaintenance.ts +++ b/Model/Models/ScheduledMaintenance.ts @@ -713,7 +713,12 @@ export default class ScheduledMaintenance extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectScheduledMaintenance, + ], update: [], }) @TableColumn({ @@ -760,4 +765,34 @@ export default class ScheduledMaintenance extends BaseModel { nullable: true, }) public customFields?: JSONObject = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateProjectScheduledMaintenance, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectScheduledMaintenance, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified Of Resource Creation?', + description: 'Are owners notified of when this resource is created?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotifiedOfResourceCreation?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenanceInternalNote.ts b/Model/Models/ScheduledMaintenanceInternalNote.ts index d90df144ff..4b8ee209b8 100644 --- a/Model/Models/ScheduledMaintenanceInternalNote.ts +++ b/Model/Models/ScheduledMaintenanceInternalNote.ts @@ -340,4 +340,34 @@ export default class ScheduledMaintenanceInternalNote extends BaseModel { unique: false, }) public note?: string = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateScheduledMaintenanceInternalNote, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenanceInternalNote, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenanceOwnerTeam.ts b/Model/Models/ScheduledMaintenanceOwnerTeam.ts index 8db15228e1..865ec86a34 100644 --- a/Model/Models/ScheduledMaintenanceOwnerTeam.ts +++ b/Model/Models/ScheduledMaintenanceOwnerTeam.ts @@ -377,4 +377,33 @@ export default class ScheduledMaintenanceOwnerTeam extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateScheduledMaintenanceOwnerTeam, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenanceOwnerTeam, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenanceOwnerUser.ts b/Model/Models/ScheduledMaintenanceOwnerUser.ts index 58a38cbdb1..f3278ac3d7 100644 --- a/Model/Models/ScheduledMaintenanceOwnerUser.ts +++ b/Model/Models/ScheduledMaintenanceOwnerUser.ts @@ -376,4 +376,33 @@ export default class ScheduledMaintenanceOwnerUser extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateScheduledMaintenanceOwnerUser, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenanceOwnerUser, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenancePublicNote.ts b/Model/Models/ScheduledMaintenancePublicNote.ts index 5d595ed418..9b1f531b02 100644 --- a/Model/Models/ScheduledMaintenancePublicNote.ts +++ b/Model/Models/ScheduledMaintenancePublicNote.ts @@ -344,7 +344,12 @@ export default class ScheduledMaintenancePublicNote extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenancePublicNote, + ], update: [], }) @TableColumn({ @@ -358,4 +363,34 @@ export default class ScheduledMaintenancePublicNote extends BaseModel { default: false, }) public isStatusPageSubscribersNotifiedOnNoteCreated?: boolean = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateScheduledMaintenancePublicNote, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenancePublicNote, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/ScheduledMaintenanceStateTimeline.ts b/Model/Models/ScheduledMaintenanceStateTimeline.ts index 7676a9e000..97d5cce206 100644 --- a/Model/Models/ScheduledMaintenanceStateTimeline.ts +++ b/Model/Models/ScheduledMaintenanceStateTimeline.ts @@ -389,7 +389,12 @@ export default class ScheduledMaintenanceStateTimeline extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenanceStateTimeline, + ], update: [], }) @TableColumn({ @@ -404,4 +409,34 @@ export default class ScheduledMaintenanceStateTimeline extends BaseModel { default: false, }) public isStatusPageSubscribersNotified?: boolean = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateScheduledMaintenanceStateTimeline, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadScheduledMaintenanceStateTimeline, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of state change?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/StatusPage.ts b/Model/Models/StatusPage.ts index 84411bb52c..00b6524ab4 100755 --- a/Model/Models/StatusPage.ts +++ b/Model/Models/StatusPage.ts @@ -1064,4 +1064,34 @@ export default class StatusPage extends BaseModel { transformer: ObjectID.getDatabaseTransformer(), }) public smtpConfigId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateProjectStatusPage, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadProjectStatusPage, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified Of Resource Creation?', + description: 'Are owners notified of when this resource is created?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotifiedOfResourceCreation?: ObjectID = undefined; } diff --git a/Model/Models/StatusPageAnnouncement.ts b/Model/Models/StatusPageAnnouncement.ts index a6e6e5ca72..3d3a07d3ac 100644 --- a/Model/Models/StatusPageAnnouncement.ts +++ b/Model/Models/StatusPageAnnouncement.ts @@ -414,7 +414,12 @@ export default class StatusPageAnnouncement extends BaseModel { @ColumnAccessControl({ create: [], - read: [], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadStatusPageAnnouncement, + ], update: [], }) @TableColumn({ isDefaultValueColumn: true, type: TableColumnType.Boolean }) @@ -423,4 +428,38 @@ export default class StatusPageAnnouncement extends BaseModel { default: false, }) public isStatusPageSubscribersNotified?: boolean = undefined; + + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanCreateStatusPageAnnouncement, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadStatusPageAnnouncement, + ], + update: [ + + ], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: + 'Are owners notified of this announcement?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/StatusPageOwnerTeam.ts b/Model/Models/StatusPageOwnerTeam.ts index 6b4d10e8fb..d95f5c1aa3 100644 --- a/Model/Models/StatusPageOwnerTeam.ts +++ b/Model/Models/StatusPageOwnerTeam.ts @@ -376,4 +376,33 @@ export default class StatusPageOwnerTeam extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateStatusPageOwnerTeam, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadStatusPageOwnerTeam, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; } diff --git a/Model/Models/StatusPageOwnerUser.ts b/Model/Models/StatusPageOwnerUser.ts index 12ff7fb2bc..afb8e8b8a5 100644 --- a/Model/Models/StatusPageOwnerUser.ts +++ b/Model/Models/StatusPageOwnerUser.ts @@ -375,4 +375,33 @@ export default class StatusPageOwnerUser extends AccessControlModel { transformer: ObjectID.getDatabaseTransformer(), }) public deletedByUserId?: ObjectID = undefined; + + @ColumnAccessControl({ + create: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.CanCreateStatusPageOwnerUser, + ], + read: [ + Permission.ProjectOwner, + Permission.ProjectAdmin, + Permission.ProjectMember, + Permission.CanReadStatusPageOwnerUser, + ], + update: [], + }) + @Index() + @TableColumn({ + type: TableColumnType.Boolean, + required: true, + isDefaultValueColumn: true, + title: 'Are Owners Notified', + description: 'Are owners notified of this resource ownership?', + }) + @Column({ + type: ColumnType.Boolean, + nullable: false, + default: false, + }) + public isOwnerNotified?: ObjectID = undefined; }