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;
}