Compare commits

..
Author SHA1 Message Date
Gabriel Amorim d1149a4d52 Merge pull request #215 from dadosfera/alpha
FIX: permissions.enum.ts
2023-05-08 16:02:33 -03:00
Gabriel Amorim 4c6f4bfd84 FIX: renamed reference to intelligence permission 2023-05-08 15:56:52 -03:00
Gabriel Amorim 9caf3dc67f FIX: renamed reference to intelligence permission 2023-05-08 15:48:46 -03:00
Beatriz Antunes 635c4da48c Update permissions.enum.ts 2023-05-08 15:44:05 -03:00
Gabriel Amorim 44bb205483 Merge pull request #214 from dadosfera/fix/get-links-permission
FIX: remove permission check to get customer links
2023-05-05 13:52:38 -03:00
Gabriel Amorim edb4622684 FIX: remove permission to get customer links 2023-05-05 12:13:55 -03:00
8 changed files with 59 additions and 116 deletions
+9 -47
View File
@@ -1412,51 +1412,6 @@
]
}
},
"/users/connector_request": {
"post": {
"operationId": "UsersController_sendConnectorRequest",
"parameters": [
{
"name": "dadosfera-lang",
"in": "header",
"required": false,
"schema": {
"enum": [
"pt-br",
"en-us"
],
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserRes"
}
}
}
},
"201": {
"description": ""
}
},
"tags": [
"Users"
],
"security": [
{
"access-token": []
},
{
"access-token": []
}
]
}
},
"/roles": {
"get": {
"operationId": "RolesController_searchRoles",
@@ -4968,7 +4923,14 @@
},
"responses": {
"201": {
"description": ""
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": [
@@ -5079,7 +5041,7 @@
}
},
"info": {
"title": "Maestro - main",
"title": "Maestro - feature/customer-links",
"description": "This is the Maestro API",
"version": "1.0.0",
"contact": {}
@@ -44,7 +44,7 @@ class NoClassAuthController {
@Get('has-all-permissions')
@RequireAllPermissions(
PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN,
PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE,
PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE,
)
async hasAllPermissions(@Body() body) {
return { body };
@@ -53,7 +53,7 @@ class NoClassAuthController {
@Get('has-some-permission')
@RequireSomePermission(
PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN,
PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE,
PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE,
)
async hasSomePermission(@Body() body) {
return { body };
@@ -62,7 +62,7 @@ class NoClassAuthController {
@Controller('class-auth-condition')
@AuthenticateCondition((req) => req.get('x-on-class') === 'ok')
@RequireSomePermission(PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE)
@RequireSomePermission(PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE)
class ClassAuthConditionController {
@Get('body')
async getBody(@Body() body) {
@@ -444,13 +444,13 @@ describe('authentication.guard', () => {
NoClassAuthTest(tokenZ, ['zendesk']);
ClassAuthConditionTest(tokenZ, ['zendesk']);
const tokenM = CreateToken([PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE]);
const tokenM = CreateToken([PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE]);
NoClassAuthTest(tokenM, ['metabase']);
ClassAuthConditionTest(tokenM, ['metabase']);
const tokenZM = CreateToken([
PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN,
PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE,
PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE,
]);
NoClassAuthTest(tokenZM, ['zendesk', 'metabase']);
ClassAuthConditionTest(tokenZM, ['zendesk', 'metabase']);
+12 -2
View File
@@ -449,7 +449,7 @@ export const PERMISSIONS_GROUPS = {
},
},
ANALYZE: {
DATAVIZ: {
title: {
'pt-br': 'Analisar | Visualização',
'en-us': 'Analyze | Visualization',
@@ -466,6 +466,15 @@ export const PERMISSIONS_GROUPS = {
'es-es': 'Acceso Metabase',
},
},
},
},
INTELLIGENCE: {
title: {
'pt-br': 'Analisar | Inteligência',
'en-us': 'Analyze | Intelligence',
'es-es': 'Analizar | Inteligencia',
},
permissions: {
INTELLIGENCE: {
seqid: 31,
claim: 'intelligence:open',
@@ -587,7 +596,8 @@ export const DADOSFERA_MODULES: Array<DadosferaModule> = [
name: 'Intelligence Module',
description: 'Orchest Module',
key: 'intelligence',
permissionSeqId: PERMISSIONS_GROUPS.ANALYZE.permissions.INTELLIGENCE.seqid,
permissionSeqId:
PERMISSIONS_GROUPS.INTELLIGENCE.permissions.INTELLIGENCE.seqid,
},
{
name: 'Proccessing Module',
+1 -1
View File
@@ -46,7 +46,7 @@ describe('user.decorator', () => {
const fakeUserPayload = {
user_id: 'd50d33c7-6c2b-463c-861f-e21667e7c125',
username: 'super.admin',
permissions: [PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE].map(
permissions: [PERMISSIONS_GROUPS.DATAVIZ.permissions.METABASE].map(
({ seqid }) => seqid,
),
customer_id: '9d18e8ae-24b9-41a3-9e8f-a25ce57555b11',
@@ -37,7 +37,6 @@ export class CustomersController {
}
@Get(':id/links')
@RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
async getCustomerLinks(@Param('id') id): Promise<CustomerLinksResponse> {
this.logger.info('getCustomerLinks', { id });
const links = await this.customersService.getLinks(id);
@@ -14,44 +14,42 @@ import { INote } from './dtos';
export class ProductboardController {
@Post('notes')
async sendNote(@Body() note: INote, @User() user: RequestUser) {
const [request_type, urgency, connector_name = 'Não informado'] = note.tags;
const { title, content, tags } = note;
const { username, customer_name } = user;
const { title, content } = note;
// const { username, customer_name } = user;
const email = username.includes('@')
? username
: username + `@${customer_name}.default`;
// const email = username.includes('@')
// ? username
// : username + `@${customer_name}.default`;
const path = process.env.PB_TOKEN_PATH;
const token = await getSecretFromSecretsManager(path);
// const path = process.env.PB_TOKEN_PATH;
// const token = await getSecretFromSecretsManager(path);
const response = await axios
.post(
`https://api.productboard.com/notes`,
{
title,
content,
tags,
user: {
email,
},
},
{
headers: {
Authorization: 'Bearer ' + token,
},
},
)
.catch(() => null);
// const response = await axios
// .post(
// `https://api.productboard.com/notes`,
// {
// title,
// content,
// tags,
// user: {
// email,
// },
// },
// {
// headers: {
// Authorization: 'Bearer ' + token,
// },
// },
// )
// .catch(() => null);
if (!response) {
throw new HttpException(
'Your request could not be submitted, please try again in a few moments or contact support.',
502,
);
}
// if (!response) {
// throw new HttpException(
// 'Your request could not be submitted, please try again in a few moments or contact support.',
// 502,
// );
// }
// return response.data;
return response.data;
}
}
-13
View File
@@ -263,17 +263,4 @@ export class UsersController {
this.logger.info('synchronizeUser', { user });
return await this.userService.synchronizeUser(id);
}
@Post('connector_request')
@RequireAllPermissions(PERMISSIONS_GROUPS.DADOSFERA.permissions.SYNC_USER)
@ApiOkResponse({ type: UpdateUserRes })
async sendConnectorRequest(@User() user: RequestUser, request) {
const metadata = PackTheMetadata({
customer_name: user.customer_name,
customer_id: user.customer_id,
user_id: user.user_id,
username: user.username,
});
this.userService.sendUserConnectorRequest(request, metadata);
}
}
-13
View File
@@ -243,17 +243,4 @@ export class UsersService implements OnModuleInit {
this.usersClientService.INTERNAL_UserSynchronize({ userId }),
);
}
async sendUserConnectorRequest(
request: {
connector_name: string;
description: string;
title: string;
urgency: string;
},
metadata: Metadata,
) {
return await lastValueFrom(
this.usersClientService.UserConnectorRequest({ request }, metadata),
);
}
}