maybe adding acls idk
This commit is contained in:
parent
c9184a9f82
commit
2e59d0b907
@ -114,7 +114,13 @@ export class AppStorageService {
|
||||
|
||||
set.storages = [...(set.storages || []), storage];
|
||||
|
||||
return this.formatStorageSetNoItems(set);
|
||||
// Remove circular set reference
|
||||
const respondWith = {
|
||||
...set,
|
||||
storages: set.storages.map((storage) => omit(storage, ['set'])),
|
||||
};
|
||||
|
||||
return this.formatStorageSetNoItems(respondWith);
|
||||
}
|
||||
|
||||
async removeFromSet(set: StorageSet, storage: Storage) {
|
||||
@ -421,7 +427,7 @@ export class AppStorageService {
|
||||
...omit(storage, ['room', 'set']),
|
||||
items: !!storage.items?.length
|
||||
? storage.items.map((item) => this.formatStoredItem(item))
|
||||
: null,
|
||||
: [],
|
||||
addedBy: storage.addedBy && this.formatActor(storage.addedBy),
|
||||
};
|
||||
}
|
||||
|
@ -5,9 +5,18 @@ import { Building } from './entities/building.entity';
|
||||
import { BuildingService } from './building.service';
|
||||
import { Floor } from './entities/floor.entity';
|
||||
import { Room } from './entities/room.entity';
|
||||
import { UserBuildingAccessControl } from './entities/acl.entity';
|
||||
|
||||
@Module({
|
||||
imports: [GroupModule, TypeOrmModule.forFeature([Building, Floor, Room])],
|
||||
imports: [
|
||||
GroupModule,
|
||||
TypeOrmModule.forFeature([
|
||||
Building,
|
||||
Floor,
|
||||
Room,
|
||||
UserBuildingAccessControl,
|
||||
]),
|
||||
],
|
||||
providers: [BuildingService],
|
||||
exports: [TypeOrmModule, BuildingService],
|
||||
})
|
||||
|
@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { GroupService } from '../group/group.service';
|
||||
import { UserBuildingAccessControl } from './entities/acl.entity';
|
||||
import { Building } from './entities/building.entity';
|
||||
import { Floor } from './entities/floor.entity';
|
||||
import { Room } from './entities/room.entity';
|
||||
@ -15,6 +16,8 @@ export class BuildingService {
|
||||
private readonly floorRepository: Repository<Floor>,
|
||||
@InjectRepository(Room)
|
||||
private readonly roomRepository: Repository<Room>,
|
||||
@InjectRepository(UserBuildingAccessControl)
|
||||
private readonly aclRepository: Repository<UserBuildingAccessControl>,
|
||||
private readonly groupService: GroupService,
|
||||
) {}
|
||||
|
||||
|
37
src/objects/building/entities/acl.entity.ts
Normal file
37
src/objects/building/entities/acl.entity.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { User } from 'src/objects/user/user.entity';
|
||||
import { Building } from 'src/objects/building/entities/building.entity';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import { Group } from 'src/objects/group/group.entity';
|
||||
import { Access } from 'src/objects/enums/access-control.enum';
|
||||
|
||||
@Entity()
|
||||
export class UserBuildingAccessControl {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@ApiProperty({ type: () => User })
|
||||
@ManyToOne(() => User, {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
})
|
||||
user: User;
|
||||
|
||||
@ApiProperty({ type: () => Building })
|
||||
@ManyToOne(() => Building, {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
})
|
||||
building: Building;
|
||||
|
||||
@ApiProperty({ type: () => Group })
|
||||
@ManyToOne(() => Group, {
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
})
|
||||
group: Group;
|
||||
|
||||
@ApiProperty({ enum: Access })
|
||||
@Column({ type: String })
|
||||
access: Access;
|
||||
}
|
8
src/objects/enums/access-control.enum.ts
Normal file
8
src/objects/enums/access-control.enum.ts
Normal file
@ -0,0 +1,8 @@
|
||||
export enum Access {
|
||||
ADMIN = 'ADMIN',
|
||||
EDIT_FLOOR_PLAN = 'EDIT_FLOOR_PLAN',
|
||||
MANAGE_STORAGE = 'MANAGE_STORAGE',
|
||||
MANAGE_ACCESS = 'MANAGE_ACCESS',
|
||||
MANAGE_FINANCE = 'MANAGE_FINANCE',
|
||||
TODOLIST = 'TODOLIST',
|
||||
}
|
Loading…
Reference in New Issue
Block a user