Compare commits

...
9 Commits
Author SHA1 Message Date
arthur simas ba12d45bf7 Merge pull request #128 from dadosfera/feat/snowflake-sso
FEAT: snowflake single sign-on
2022-08-04 17:40:35 -03:00
Arthur Simas ec418b00e7 FIX: relay state in response 2022-08-04 11:29:05 -03:00
Arthur Simas 89a02a4e8a FIX: added snowflake sso relaystate field 2022-08-04 11:11:42 -03:00
Arthur Simas 7cf178db42 FEAT: fake commit 2022-08-02 16:50:35 -03:00
Arthur Simas 2673e75f81 CHORE: protospack-v2 bumped 2022-08-02 16:13:12 -03:00
Arthur Simas 6382939e1e FEAT: snowflake sso 2022-08-02 15:27:18 -03:00
arthur simas 3bea2e4cda Merge pull request #124 from dadosfera/feat/permissions
FEAT: permissions updated
2022-08-02 14:57:40 -03:00
Arthur Simas d9a7555d01 Merge branch 'main' into feat/permissions 2022-08-02 14:49:25 -03:00
Arthur SimasandBeatriz Antunes 4fb24d5b5c FEAT: permissions updated
Co-Authored-By: Beatriz Antunes <beatrizaantunes@gmail.com>
2022-07-29 13:39:38 -03:00
5 changed files with 87 additions and 58 deletions
+7 -7
View File
@@ -11,7 +11,7 @@
"dependencies": {
"@aws-sdk/client-secrets-manager": "^3.112.0",
"@dadosfera/dadosfera-logs": "^1.0.0-beta.3",
"@dadosfera/protospack-v2": "3.10.0",
"@dadosfera/protospack-v2": "3.11.0-beta.4",
"@grpc/grpc-js": "^1.6.7",
"@grpc/proto-loader": "^0.6.13",
"@nestjs/common": "^8.4.7",
@@ -1723,9 +1723,9 @@
}
},
"node_modules/@dadosfera/protospack-v2": {
"version": "3.10.0",
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz",
"integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==",
"version": "3.11.0-beta.4",
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz",
"integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==",
"dependencies": {
"@grpc/grpc-js": "^1.6.7",
"rxjs": "^7.5.5",
@@ -12287,9 +12287,9 @@
}
},
"@dadosfera/protospack-v2": {
"version": "3.10.0",
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz",
"integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==",
"version": "3.11.0-beta.4",
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz",
"integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==",
"requires": {
"@grpc/grpc-js": "^1.6.7",
"rxjs": "^7.5.5",
+1 -1
View File
@@ -51,7 +51,7 @@
"passport-hubspot-oauth2": "^1.0.3",
"passport-mailchimp": "^1.1.0",
"protospack": "2.5.2",
"@dadosfera/protospack-v2": "3.10.0",
"@dadosfera/protospack-v2": "3.11.0-beta.4",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^7.5.5",
+50 -50
View File
@@ -58,8 +58,8 @@ export const PERMISSIONS = {
PIPELINE: {
title: {
'pt-br': 'Pipelines',
'en-us': 'Pipelines',
'pt-br': 'Coletar | Pipelines',
'en-us': 'Collect | Pipelines',
},
permissions: {
CREATE: {
@@ -94,7 +94,7 @@ export const PERMISSIONS = {
claim: 'DELETE /pipelines',
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Remover pipeline',
'pt-br': 'Excluir pipeline',
'en-us': 'Delete pipeline',
},
},
@@ -103,14 +103,14 @@ export const PERMISSIONS = {
INPUT: {
title: {
'pt-br': 'Conexões',
'en-us': 'Connections',
'pt-br': 'Coletar | Conexões',
'en-us': 'Collect | Connections',
},
permissions: {
CREATE: {
seqid: 21,
claim: 'POST /inputs',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Criar conexões',
'en-us': 'Create connections',
@@ -119,7 +119,7 @@ export const PERMISSIONS = {
GET: {
seqid: 9,
claim: 'GET /inputs',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Buscar conexões',
'en-us': 'Get connections',
@@ -128,7 +128,7 @@ export const PERMISSIONS = {
UPDATE: {
seqid: 27,
claim: 'PUT /inputs',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Atualizar conexões',
'en-us': 'Create connections',
@@ -137,18 +137,18 @@ export const PERMISSIONS = {
DELETE: {
seqid: 3,
claim: 'DELETE /inputs',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover conexões',
'pt-br': 'Excluir conexões',
'en-us': 'Delete connections',
},
},
GET_ENTITIES: {
seqid: 10,
claim: 'GET /inputs/available-entities',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover conexões',
'pt-br': 'Excluir conexões',
'en-us': 'Delete connections',
},
},
@@ -193,7 +193,7 @@ export const PERMISSIONS = {
claim: 'DELETE /outputs',
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover outputs',
'pt-br': 'Excluir outputs',
'en-us': 'Remove outputs',
},
},
@@ -209,7 +209,7 @@ export const PERMISSIONS = {
CREATE: {
seqid: 24,
claim: 'POST /transformations',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Criar micro-transformações',
'en-us': 'Create micro-transformations',
@@ -218,7 +218,7 @@ export const PERMISSIONS = {
GET: {
seqid: 15,
claim: 'GET /transformations',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Buscar micro-transformações',
'en-us': 'Get micro-transformations',
@@ -227,7 +227,7 @@ export const PERMISSIONS = {
UPDATE: {
seqid: 30,
claim: 'PUT /transformations',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Editar micro-transformações',
'en-us': 'Edit micro-transformations',
@@ -236,9 +236,9 @@ export const PERMISSIONS = {
DELETE: {
seqid: 6,
claim: 'DELETE /transformations',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover micro-transformações',
'pt-br': 'Excluir micro-transformações',
'en-us': 'Remove micro-transformations',
},
},
@@ -247,44 +247,44 @@ export const PERMISSIONS = {
CATALOG: {
title: {
'pt-br': 'Catálogo',
'en-us': 'Catalog',
'pt-br': 'Explorar | Catálogo',
'en-us': 'Explore | Catalog',
},
permissions: {
GET: {
seqid: 7,
claim: 'GET /catalog',
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Buscar data assets',
'en-us': 'Search for data assets',
},
},
CREATE: {
seqid: 19,
claim: 'POST /catalog',
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Criar atributos no catálogo',
'en-us': 'Create catalog attributes',
},
},
GET: {
seqid: 7,
claim: 'GET /catalog',
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Buscar catálogos',
'en-us': 'Get catalogs',
'en-us': 'Create attributes',
},
},
UPDATE: {
seqid: 25,
claim: 'PUT /catalog',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Editar catálogo',
'en-us': 'Edit catalogs',
'pt-br': 'Editar atributos no catálogo',
'en-us': 'Edit attributes',
},
},
DELETE: {
seqid: 1,
claim: 'DELETE /catalog',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover catálogo',
'en-us': 'Remove catalogs',
'pt-br': 'Excluir atributos no catálogo',
'en-us': 'Remove attributes',
},
},
},
@@ -328,7 +328,7 @@ export const PERMISSIONS = {
claim: 'DELETE /connectors',
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Remover conectores',
'pt-br': 'Excluir conectores',
'en-us': 'Remove connectors',
},
},
@@ -337,8 +337,8 @@ export const PERMISSIONS = {
SNOWFLAKE: {
title: {
'pt-br': 'Snowflake',
'en-us': 'Snowflake',
'pt-br': 'Explorar | Consolidar',
'en-us': 'Explore | Data consolidation',
},
permissions: {
OPEN: {
@@ -373,14 +373,14 @@ export const PERMISSIONS = {
METABASE: {
title: {
'pt-br': 'Metabase',
'en-us': 'Metabase',
'pt-br': 'Analisar | Visualização',
'en-us': 'Analyze | Visualization',
},
permissions: {
OPEN: {
seqid: 11,
claim: 'GET /metabase',
usage: PermissionUsages.INTERNAL,
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Acessar Metabase',
'en-us': 'Access Metabase',
@@ -391,23 +391,23 @@ export const PERMISSIONS = {
ORCHEST: {
title: {
'pt-br': 'Orchest',
'en-us': 'Orchest',
'pt-br': 'Analisar | Inteligência',
'en-us': 'Analyze | Intelligence',
},
permissions: {
INTELLIGENCE: {
seqid: 31,
claim: 'intelligence:open',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Acessar inteligência',
'en-us': 'Access intelligence',
'pt-br': 'Acessar Orchest',
'en-us': 'Access Orchest',
},
},
APP_BUILDER: {
seqid: 32,
claim: 'app-builder:open',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Acessar App Builder',
'en-us': 'Access App Builder',
@@ -416,7 +416,7 @@ export const PERMISSIONS = {
MACHINE_LEARNING: {
seqid: 33,
claim: 'machine-learning:open',
usage: PermissionUsages.PUBLIC,
usage: PermissionUsages.INTERNAL,
name: {
'pt-br': 'Acessar Machine Learning',
'en-us': 'Access Machine Learning',
@@ -435,7 +435,7 @@ export const PERMISSIONS = {
claim: 'users:admin',
usage: PermissionUsages.PUBLIC,
name: {
'pt-br': 'Administrar usuários e grupos',
'pt-br': 'Gestão de usuários e grupos',
'en-us': 'Manage user and roles',
},
},
+22
View File
@@ -7,6 +7,7 @@ import {
HttpStatus,
Inject,
UseFilters,
Query,
} from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import {
@@ -21,9 +22,15 @@ import {
AuthVerifyTotpMfaRequest,
} from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages';
import { PERMISSIONS } from 'src/authentication/permissions.enum';
import {
Authenticated,
RequireAllPermissions,
} from 'src/authentication/authentication.decorator';
import { AuthClientService } from './auth.service';
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter';
import { RequestUser, User } from 'src/authentication/user.decorator';
@ApiTags('Auth')
@UseFilters(new GrpcToHttpExceptionFilter())
@@ -39,6 +46,21 @@ export class AuthController {
this.logger = dadosferaLogger.logger;
}
@Post('/sso/snowflake')
@RequireAllPermissions(PERMISSIONS.SNOWFLAKE.permissions.OPEN)
@HttpCode(HttpStatus.OK)
async snowflakeSignIn(
@User() user: RequestUser,
@Body('RelayState') relayState: string,
) {
this.logger.info('/auth - snowflakeSignIn');
return this.authClient.snowflakeSignIn({
userId: user.user_id,
relayState,
});
}
@Post('sign-in')
@HttpCode(HttpStatus.OK)
async signIn(@Body() { username, password, totp }: AuthSignInRequest) {
+7
View File
@@ -6,6 +6,7 @@ import { lastValueFrom } from 'rxjs';
import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc';
import { AuthProtoService as AuthServiceInterface } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service';
import {
AuthSnowflakeSignInRequest,
AuthSignInRequest,
AuthRefreshAccessTokenRequest,
AuthEnableTotpMfaRequest,
@@ -43,6 +44,12 @@ export class AuthClientService implements OnModuleInit {
return lastValueFrom(this.authService.AuthGetPublicKeys({}));
}
async snowflakeSignIn(input: AuthSnowflakeSignInRequest) {
this.logger.info('snowflakeSignIn');
return lastValueFrom(this.authService.AuthSnowflakeSignIn(input));
}
async signIn({ username, password, totp }: AuthSignInRequest) {
this.logger.info('SignIn');