Add space permission service and guards for various entities

This commit is contained in:
faris Aljohari
2024-05-07 22:27:45 +03:00
parent c5e8cc1898
commit bee140f517
8 changed files with 217 additions and 3 deletions
+1
View File
@@ -1 +1,2 @@
export * from './helper.hash.service';
export * from './space.permission.service';
@@ -0,0 +1,35 @@
import { Injectable } from '@nestjs/common';
import { SpaceRepository } from '@app/common/modules/space/repositories';
import { BadRequestException } from '@nestjs/common';
@Injectable()
export class SpacePermissionService {
constructor(private readonly spaceRepository: SpaceRepository) {}
async checkUserPermission(
spaceUuid: string,
userUuid: string,
type: string,
): Promise<void> {
const spaceData = await this.spaceRepository.findOne({
where: {
uuid: spaceUuid,
spaceType: {
type: type,
},
userSpaces: {
user: {
uuid: userUuid,
},
},
},
relations: ['spaceType', 'userSpaces', 'userSpaces.user'],
});
if (!spaceData) {
throw new BadRequestException(
`You do not have permission to access this ${type}`,
);
}
}
}