Merge pull request #31 from SyncrowIOT/SP-202-be-handle-space-permissions

Sp 202 be handle space permissions
This commit is contained in:
Ammar Qaffaf
2024-05-19 03:26:23 -04:00
committed by GitHub
14 changed files with 247 additions and 22 deletions

View File

@ -1,11 +1,14 @@
import { Global, Module } from '@nestjs/common';
import { HelperHashService } from './services';
import { SpacePermissionService } from './services/space.permission.service';
import { SpaceRepository } from '../modules/space/repositories';
import { SpaceRepositoryModule } from '../modules/space/space.repository.module';
@Global()
@Module({
providers: [HelperHashService],
exports: [HelperHashService],
providers: [HelperHashService, SpacePermissionService, SpaceRepository],
exports: [HelperHashService, SpacePermissionService],
controllers: [],
imports: [],
imports: [SpaceRepositoryModule],
})
export class HelperModule {}

View File

@ -1 +1,2 @@
export * from './helper.hash.service';
export * from './space.permission.service';

View File

@ -0,0 +1,39 @@
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> {
try {
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}`,
);
}
} catch (err) {
throw new BadRequestException(err.message || 'Invalid UUID');
}
}
}