From fbb6526aac1a20e6d74e9f1722d3888b97fe3fba Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 2 Sep 2024 15:38:53 +0000 Subject: [PATCH] refactor(update-role-mappings): move logic to model --- .../update-role-mappings.ee.js | 30 ++------------- .../src/models/saml-auth-provider.ee.js | 37 ++++++++++++++++--- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-role-mappings.ee.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-role-mappings.ee.js index 0aa122dc..c0e6afb8 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-role-mappings.ee.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-role-mappings.ee.js @@ -1,7 +1,5 @@ -import isEmpty from 'lodash/isEmpty.js'; import { renderObject } from '../../../../../helpers/renderer.js'; import SamlAuthProvider from '../../../../../models/saml-auth-provider.ee.js'; -import SamlAuthProvidersRoleMapping from '../../../../../models/saml-auth-providers-role-mapping.ee.js'; export default async (request, response) => { const samlAuthProviderId = request.params.samlAuthProviderId; @@ -11,31 +9,9 @@ export default async (request, response) => { .throwIfNotFound(); const samlAuthProvidersRoleMappings = - await SamlAuthProvidersRoleMapping.transaction(async (trx) => { - await samlAuthProvider - .$relatedQuery('samlAuthProvidersRoleMappings', trx) - .delete(); - - const roleMappings = samlAuthProvidersRoleMappingsParams(request); - - if (isEmpty(roleMappings)) { - return []; - } - - const samlAuthProvidersRoleMappingsData = roleMappings.map( - (samlAuthProvidersRoleMapping) => ({ - ...samlAuthProvidersRoleMapping, - samlAuthProviderId: samlAuthProvider.id, - }) - ); - - const samlAuthProvidersRoleMappings = - await SamlAuthProvidersRoleMapping.query(trx).insertAndFetch( - samlAuthProvidersRoleMappingsData - ); - - return samlAuthProvidersRoleMappings; - }); + await samlAuthProvider.updateRoleMappings( + samlAuthProvidersRoleMappingsParams(request) + ); renderObject(response, samlAuthProvidersRoleMappings); }; diff --git a/packages/backend/src/models/saml-auth-provider.ee.js b/packages/backend/src/models/saml-auth-provider.ee.js index 431153f9..744da1a8 100644 --- a/packages/backend/src/models/saml-auth-provider.ee.js +++ b/packages/backend/src/models/saml-auth-provider.ee.js @@ -1,5 +1,6 @@ import { URL } from 'node:url'; import { v4 as uuidv4 } from 'uuid'; +import isEmpty from 'lodash/isEmpty.js'; import appConfig from '../config/app.js'; import axios from '../helpers/axios-with-proxy.js'; import Base from './base.js'; @@ -88,7 +89,7 @@ class SamlAuthProvider extends Base { entryPoint: this.entryPoint, issuer: this.issuer, signatureAlgorithm: this.signatureAlgorithm, - logoutUrl: this.remoteLogoutUrl + logoutUrl: this.remoteLogoutUrl, }; } @@ -101,14 +102,16 @@ class SamlAuthProvider extends Base { IssueInstant="${new Date().toISOString()}" Destination="${this.remoteLogoutUrl}"> - ${this.issuer} + ${ + this.issuer + } ${sessionId} `; - const encodedLogoutRequest = Buffer.from(logoutRequest).toString('base64') + const encodedLogoutRequest = Buffer.from(logoutRequest).toString('base64'); - return encodedLogoutRequest + return encodedLogoutRequest; } async terminateRemoteSession(sessionId) { @@ -122,12 +125,36 @@ class SamlAuthProvider extends Base { { headers: { 'Content-Type': 'application/x-www-form-urlencoded', - } + }, } ); return response; } + + async updateRoleMappings(roleMappings) { + return await SamlAuthProvider.transaction(async (trx) => { + await this.$relatedQuery('samlAuthProvidersRoleMappings', trx).delete(); + + if (isEmpty(roleMappings)) { + return []; + } + + const samlAuthProvidersRoleMappingsData = roleMappings.map( + (samlAuthProvidersRoleMapping) => ({ + ...samlAuthProvidersRoleMapping, + samlAuthProviderId: this.id, + }) + ); + + const samlAuthProvidersRoleMappings = + await SamlAuthProvidersRoleMapping.query(trx).insertAndFetch( + samlAuthProvidersRoleMappingsData + ); + + return samlAuthProvidersRoleMappings; + }); + } } export default SamlAuthProvider;