auth
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { UserRole } from '../users/enums/user-role.enum';
|
||||
import { AuthUser } from '../auth/interfaces/auth-user.interface';
|
||||
import { UserPermission } from './entities/user-permission.entity';
|
||||
|
||||
@Injectable()
|
||||
export class AuthorizationService {
|
||||
constructor(
|
||||
@InjectRepository(UserPermission)
|
||||
private readonly userPermissionsRepository: Repository<UserPermission>,
|
||||
) {}
|
||||
|
||||
async loadPermissions(userId: string): Promise<string[]> {
|
||||
const userPermissions = await this.userPermissionsRepository.find({
|
||||
where: { userId },
|
||||
relations: { permission: true },
|
||||
});
|
||||
|
||||
return userPermissions.map((up) => up.permission.code);
|
||||
}
|
||||
|
||||
hasPermission(user: AuthUser, code: string): boolean {
|
||||
return user.permissions.includes(code);
|
||||
}
|
||||
|
||||
isAdmin(user: AuthUser): boolean {
|
||||
return user.role === UserRole.ADMIN;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user