mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-27 12:14:49 +00:00
FEAT: add decorator to block endpoint if not found module
This commit is contained in:
@@ -121,6 +121,7 @@ export class AuthenticationGuard
|
||||
customer_id: accessTokenPayload.customer_id,
|
||||
customer_name: accessTokenPayload.customer_name,
|
||||
customer_tier: accessTokenPayload.customer_tier,
|
||||
customer_modules: accessTokenPayload.customer_modules,
|
||||
access_token: accessToken,
|
||||
};
|
||||
// TODO: for backwards compatibility. remove in the future
|
||||
|
||||
@@ -609,6 +609,11 @@ export interface DadosferaModule {
|
||||
key: string;
|
||||
permissionSeqId: number;
|
||||
}
|
||||
|
||||
export const DADOSFERA_MODULES_KEYS = {
|
||||
LOG_DASHBOARD: 'logs-dashboard'
|
||||
}
|
||||
|
||||
export const DADOSFERA_MODULES: Array<DadosferaModule> = [
|
||||
{
|
||||
name: 'Intelligence Module',
|
||||
|
||||
@@ -25,6 +25,14 @@ export function RequireSomePermission(
|
||||
);
|
||||
}
|
||||
|
||||
export function RequireModule(
|
||||
key: string
|
||||
) {
|
||||
return createAuthenticatedDecorator((_, user: RequestUser) =>
|
||||
user.customer_modules.some(module => module === key),
|
||||
);
|
||||
}
|
||||
|
||||
export function AuthenticateCondition(func: AuthenticationFunction) {
|
||||
return createAuthenticatedDecorator(func);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ export interface RequestUser {
|
||||
customer_name: string;
|
||||
customer_tier: string;
|
||||
access_token: string;
|
||||
customer_modules: string[];
|
||||
}
|
||||
|
||||
export const User: (options?: { required?: boolean }) => ParameterDecorator =
|
||||
|
||||
@@ -12,10 +12,11 @@ import {
|
||||
UseFilters,
|
||||
} from '@nestjs/common';
|
||||
import { ApiOkResponse, ApiProduces, ApiTags } from '@nestjs/swagger';
|
||||
import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum';
|
||||
import { DADOSFERA_MODULES_KEYS, PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum';
|
||||
import {
|
||||
Authenticated,
|
||||
RequireAllPermissions,
|
||||
RequireModule,
|
||||
} from 'src/decorators/authentication.decorator';
|
||||
import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter';
|
||||
import { CustomersService } from './customers.service';
|
||||
@@ -97,15 +98,14 @@ export class CustomersController {
|
||||
@RequireAllPermissions(
|
||||
PERMISSIONS_GROUPS.USERS.permissions.ADMIN,
|
||||
)
|
||||
@RequireModule(DADOSFERA_MODULES_KEYS.LOG_DASHBOARD)
|
||||
async getCustomerMixPanelLogsDashboard(
|
||||
@User() user: RequestUser,
|
||||
): Promise<{ url: string }> {
|
||||
this.logger.info('getLogsDashboardUrl');
|
||||
): Promise<{ url: string }> {
|
||||
this.logger.info('getLogsDashboardUrl');
|
||||
const metadata = PackTheMetadata(user);
|
||||
|
||||
const result = await this.customersService.getLogsDashboardUrl(metadata);
|
||||
const result = await this.customersService.getLogsDashboardUrl(metadata);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user