Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ee/packages/abac/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/logger": "workspace:^",
"@rocket.chat/models": "workspace:^",
"mem": "^8.1.1",
"mongodb": "6.10.0",
"p-limit": "3.1.0"
},
Expand Down
87 changes: 87 additions & 0 deletions ee/packages/abac/src/errors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
export enum AbacErrorCode {
InvalidAttributeValues = 'error-invalid-attribute-values',
InvalidAttributeKey = 'error-invalid-attribute-key',
AttributeNotFound = 'error-attribute-not-found',
AttributeInUse = 'error-attribute-in-use',
DuplicateAttributeKey = 'error-duplicate-attribute-key',
AttributeDefinitionNotFound = 'error-attribute-definition-not-found',
RoomNotFound = 'error-room-not-found',
CannotConvertDefaultRoomToAbac = 'error-cannot-convert-default-room-to-abac',
UsernamesNotMatchingAbacAttributes = 'error-usernames-not-matching-abac-attributes',
AbacUnsupportedObjectType = 'error-abac-unsupported-object-type',
AbacUnsupportedOperation = 'error-abac-unsupported-operation',
}

export class AbacError extends Error {
public readonly code: AbacErrorCode;

public readonly details?: unknown;

constructor(code: AbacErrorCode, details?: unknown) {
super(code);
this.code = code;
this.details = details;

Object.setPrototypeOf(this, new.target.prototype);
}
}

export class AbacInvalidAttributeValuesError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.InvalidAttributeValues, details);
}
}

export class AbacInvalidAttributeKeyError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.InvalidAttributeKey, details);
}
}

export class AbacAttributeNotFoundError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.AttributeNotFound, details);
}
}

export class AbacAttributeInUseError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.AttributeInUse, details);
}
}

export class AbacDuplicateAttributeKeyError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.DuplicateAttributeKey, details);
}
}

export class AbacAttributeDefinitionNotFoundError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.AttributeDefinitionNotFound, details);
}
}

export class AbacRoomNotFoundError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.RoomNotFound, details);
}
}

export class AbacCannotConvertDefaultRoomToAbacError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.CannotConvertDefaultRoomToAbac, details);
}
}

export class AbacUnsupportedObjectTypeError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.AbacUnsupportedObjectType, details);
}
}

export class AbacUnsupportedOperationError extends AbacError {
constructor(details?: unknown) {
super(AbacErrorCode.AbacUnsupportedOperation, details);
}
}
Loading
Loading