Skip to content

Commit

Permalink
Add deletedByUserId property to several models
Browse files Browse the repository at this point in the history
  • Loading branch information
simlarsen committed Mar 22, 2024
1 parent 1056123 commit 14016d2
Show file tree
Hide file tree
Showing 12 changed files with 134 additions and 40 deletions.
25 changes: 25 additions & 0 deletions CommonServer/Types/Database/ModelPermission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import UserType from 'Common/Types/UserType';
import ColumnBillingAccessControl from 'Common/Types/BaseDatabase/ColumnBillingAccessControl';
import DatabaseCommonInteractionPropsUtil from 'Common/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil';
import Includes from 'Common/Types/BaseDatabase/Includes';
import UserModel from 'Common/Models/UserModel';

export interface CheckReadPermissionType<TBaseModel extends BaseModel> {
query: Query<TBaseModel>;
Expand Down Expand Up @@ -295,6 +296,10 @@ export default class ModelPermission {
props
);

// add user scope if any

query = await this.addUserScopeToQuery(modelType, query, props);

if (!props.isMultiTenantRequest) {
// We will check for this permission in recursive function.

Expand Down Expand Up @@ -854,6 +859,26 @@ export default class ModelPermission {
return query;
}

private static async addUserScopeToQuery<TBaseModel extends BaseModel>(
modelType: { new (): TBaseModel },
query: Query<TBaseModel>,
props: DatabaseCommonInteractionProps
): Promise<Query<TBaseModel>> {
const model: BaseModel = new modelType();

if (model instanceof UserModel) {
if (props.userId) {
(query as any)['_id'] = props.userId;
} else if (!props.isRoot && !props.isMasterAdmin) {
throw new NotAuthorizedException(
`You do not have permissions to query on - ${model.singularName}.`
);
}
}

return query;
}

private static async addTenantScopeToQuery<TBaseModel extends BaseModel>(
modelType: { new (): TBaseModel },
query: Query<TBaseModel>,
Expand Down
1 change: 1 addition & 0 deletions Model/Models/BillingInvoice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ export default class BillingInvoice extends BaseModel {
@JoinColumn({ name: 'deletedByUserId' })
public deletedByUser?: User = undefined;


@ColumnAccessControl({
create: [],
read: [
Expand Down
19 changes: 19 additions & 0 deletions Model/Models/OnCallDutyPolicyEscalationRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,25 @@ export default class OnCallDutyPolicyEscalationRule extends BaseModel {
@JoinColumn({ name: 'deletedByUserId' })
public deletedByUser?: User = undefined;

@ColumnAccessControl({
create: [],
read: [],
update: [],
})
@TableColumn({
type: TableColumnType.ObjectID,
title: 'Deleted by User ID',
description:
'User ID who deleted this object (if this object was deleted by a User)',
})
@Column({
type: ColumnType.ObjectID,
nullable: true,
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;


@ColumnAccessControl({
create: [
Permission.ProjectOwner,
Expand Down
19 changes: 19 additions & 0 deletions Model/Models/OnCallDutyPolicyEscalationRuleSchedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -420,4 +420,23 @@ export default class OnCallDutyPolicyEscalationRuleSchedule extends BaseModel {
)
@JoinColumn({ name: 'deletedByUserId' })
public deletedByUser?: User = undefined;


@ColumnAccessControl({
create: [],
read: [],
update: [],
})
@TableColumn({
type: TableColumnType.ObjectID,
title: 'Deleted by User ID',
description:
'User ID who deleted this object (if this object was deleted by a User)',
})
@Column({
type: ColumnType.ObjectID,
nullable: true,
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;
}
18 changes: 18 additions & 0 deletions Model/Models/OnCallDutyPolicyEscalationRuleTeam.ts
Original file line number Diff line number Diff line change
Expand Up @@ -418,4 +418,22 @@ export default class OnCallDutyPolicyEscalationRuleTeam extends BaseModel {
)
@JoinColumn({ name: 'deletedByUserId' })
public deletedByUser?: User = undefined;

@ColumnAccessControl({
create: [],
read: [],
update: [],
})
@TableColumn({
type: TableColumnType.ObjectID,
title: 'Deleted by User ID',
description:
'User ID who deleted this object (if this object was deleted by a User)',
})
@Column({
type: ColumnType.ObjectID,
nullable: true,
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;
}
18 changes: 18 additions & 0 deletions Model/Models/OnCallDutyPolicyEscalationRuleUser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -417,4 +417,22 @@ export default class OnCallDutyPolicyEscalationRuleUser extends BaseModel {
)
@JoinColumn({ name: 'deletedByUserId' })
public deletedByUser?: User = undefined;

@ColumnAccessControl({
create: [],
read: [],
update: [],
})
@TableColumn({
type: TableColumnType.ObjectID,
title: 'Deleted by User ID',
description:
'User ID who deleted this object (if this object was deleted by a User)',
})
@Column({
type: ColumnType.ObjectID,
nullable: true,
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;
}
2 changes: 2 additions & 0 deletions Model/Models/OnCallDutyPolicyExecutionLog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -664,4 +664,6 @@ export default class OnCallDutyPolicyExecutionLog extends BaseModel {
default: 1,
})
public onCallPolicyExecutionRepeatCount?: number = undefined;


}
18 changes: 18 additions & 0 deletions Model/Models/OnCallDutyPolicyExecutionLogTimeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -708,4 +708,22 @@ export default class OnCallDutyPolicyExecutionLogTimeline extends BaseModel {
unique: false,
})
public acknowledgedAt?: Date = undefined;

@ColumnAccessControl({
create: [],
read: [],
update: [],
})
@TableColumn({
type: TableColumnType.ObjectID,
title: 'Deleted by User ID',
description:
'User ID who deleted this object (if this object was deleted by a User)',
})
@Column({
type: ColumnType.ObjectID,
nullable: true,
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;
}
2 changes: 2 additions & 0 deletions Model/Models/OnCallDutyPolicySchedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -402,4 +402,6 @@ export default class OnCallDutyPolicySchedule extends BaseModel {
transformer: ObjectID.getDatabaseTransformer(),
})
public deletedByUserId?: ObjectID = undefined;


}
2 changes: 2 additions & 0 deletions Model/Models/OnCallDutyPolicyScheduleLayer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -556,4 +556,6 @@ export default class OnCallDutyPolicyScheduleLayer extends BaseModel {
transformer: RestrictionTimes.getDatabaseTransformer(),
})
public restrictionTimes?: RestrictionTimes = undefined;


}
1 change: 1 addition & 0 deletions Model/Models/OnCallDutyPolicyScheduleLayerUser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -494,4 +494,5 @@ export default class OnCallDutyPolicyScheduleLayerUser extends BaseModel {
transformer: ObjectID.getDatabaseTransformer(),
})
public userId?: ObjectID = undefined;

}
49 changes: 9 additions & 40 deletions Model/Models/User.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,7 @@ import EnableDocumentation from 'Common/Types/Database/EnableDocumentation';
@AllowAccessIfSubscriptionIsUnpaid()
@TableAccessControl({
create: [Permission.Public],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],
delete: [Permission.CurrentUser],
update: [Permission.CurrentUser],
})
Expand All @@ -56,11 +52,7 @@ import EnableDocumentation from 'Common/Types/Database/EnableDocumentation';
class User extends UserModel {
@ColumnAccessControl({
create: [Permission.Public],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],
update: [Permission.CurrentUser],
})
@TableColumn({ type: TableColumnType.Name, canReadOnRelationQuery: true })
Expand All @@ -75,11 +67,7 @@ class User extends UserModel {

@ColumnAccessControl({
create: [Permission.Public],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
Expand Down Expand Up @@ -247,11 +235,7 @@ class User extends UserModel {

@ColumnAccessControl({
create: [],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
Expand All @@ -276,11 +260,7 @@ class User extends UserModel {

@ColumnAccessControl({
create: [],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
Expand All @@ -297,18 +277,15 @@ class User extends UserModel {

@ColumnAccessControl({
create: [],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
@TableColumn({
isDefaultValueColumn: true,
required: true,
type: TableColumnType.Boolean,
canReadOnRelationQuery: true,
})
@Column({
type: ColumnType.Boolean,
Expand Down Expand Up @@ -424,11 +401,7 @@ class User extends UserModel {

@ColumnAccessControl({
create: [],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
Expand Down Expand Up @@ -543,11 +516,7 @@ class User extends UserModel {

@ColumnAccessControl({
create: [],
read: [
Permission.CurrentUser,
Permission.ProjectAdmin,
Permission.ProjectOwner,
],
read: [Permission.CurrentUser],

update: [Permission.CurrentUser],
})
Expand Down

0 comments on commit 14016d2

Please sign in to comment.