refactor(server): partner core (#2678)

* refactor(server): partner core

* refactor(server): partner access check
This commit is contained in:
Jason Rasmussen
2023-06-06 16:18:38 -04:00
committed by GitHub
parent d1db479727
commit 6ce35d47f5
17 changed files with 85 additions and 84 deletions

View File

@@ -1,4 +1,5 @@
import {
IAccessRepository,
IAlbumRepository,
IAssetRepository,
ICommunicationRepository,
@@ -30,6 +31,7 @@ import { databaseConfig } from './database.config';
import { databaseEntities } from './entities';
import { bullConfig, bullQueues } from './infra.config';
import {
AccessRepository,
AlbumRepository,
APIKeyRepository,
AssetRepository,
@@ -53,6 +55,7 @@ import {
} from './repositories';
const providers: Provider[] = [
{ provide: IAccessRepository, useClass: AccessRepository },
{ provide: IAlbumRepository, useClass: AlbumRepository },
{ provide: IAssetRepository, useClass: AssetRepository },
{ provide: ICommunicationRepository, useClass: CommunicationRepository },

View File

@@ -0,0 +1,38 @@
import { IAccessRepository } from '@app/domain';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { PartnerEntity } from '../entities';
export class AccessRepository implements IAccessRepository {
constructor(@InjectRepository(PartnerEntity) private partnerRepository: Repository<PartnerEntity>) {}
hasPartnerAccess(userId: string, partnerId: string): Promise<boolean> {
return this.partnerRepository.exist({
where: {
sharedWithId: userId,
sharedById: partnerId,
},
});
}
hasPartnerAssetAccess(userId: string, assetId: string): Promise<boolean> {
return this.partnerRepository.exist({
where: {
sharedWith: {
id: userId,
},
sharedBy: {
assets: {
id: assetId,
},
},
},
relations: {
sharedWith: true,
sharedBy: {
assets: true,
},
},
});
}
}

View File

@@ -1,3 +1,4 @@
export * from './access.repository';
export * from './album.repository';
export * from './api-key.repository';
export * from './asset.repository';

View File

@@ -24,27 +24,4 @@ export class PartnerRepository implements IPartnerRepository {
async remove(entity: PartnerEntity): Promise<void> {
await this.repository.remove(entity);
}
async hasAssetAccess(assetId: string, userId: string): Promise<boolean> {
const count = await this.repository.count({
where: {
sharedWith: {
id: userId,
},
sharedBy: {
assets: {
id: assetId,
},
},
},
relations: {
sharedWith: true,
sharedBy: {
assets: true,
},
},
});
return count == 1;
}
}