From 5bbe09e4beebfa2c205ec25e8a78fa1dc6973b88 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Fri, 7 Apr 2023 16:50:05 +0300 Subject: [PATCH] Substitute hardcoded auth modes for variables --- .../src/controllers/v2/workspaceController.ts | 8 +-- backend/src/helpers/organization.ts | 58 ++++++++++++++++++- backend/src/helpers/workspace.ts | 6 +- backend/src/middleware/requireAuth.ts | 6 ++ .../src/middleware/requireWorkspaceAuth.ts | 2 +- backend/src/routes/v1/auth.ts | 5 +- backend/src/routes/v1/bot.ts | 6 +- backend/src/routes/v1/integration.ts | 13 +++-- backend/src/routes/v1/integrationAuth.ts | 21 ++++--- backend/src/routes/v1/inviteOrg.ts | 3 +- backend/src/routes/v1/key.ts | 6 +- backend/src/routes/v1/membership.ts | 9 +-- backend/src/routes/v1/membershipOrg.ts | 5 +- backend/src/routes/v1/organization.ts | 32 +++++----- backend/src/routes/v1/password.ts | 9 ++- backend/src/routes/v1/secret.ts | 10 +++- backend/src/routes/v1/serviceToken.ts | 8 ++- backend/src/routes/v1/user.ts | 5 +- backend/src/routes/v1/userAction.ts | 5 +- backend/src/routes/v1/workspace.ts | 28 +++++---- backend/src/routes/v2/apiKeyData.ts | 11 ++-- backend/src/routes/v2/environment.ts | 16 +++-- backend/src/routes/v2/organizations.ts | 19 ++++-- backend/src/routes/v2/secret.ts | 23 +++++--- backend/src/routes/v2/secrets.ts | 16 +++-- backend/src/routes/v2/serviceAccounts.ts | 22 +++---- backend/src/routes/v2/serviceTokenData.ts | 11 ++-- backend/src/routes/v2/tags.ts | 12 ++-- backend/src/routes/v2/users.ts | 10 +++- backend/src/routes/v2/workspace.ts | 40 +++++-------- backend/src/types/express/index.d.ts | 15 ++++- 31 files changed, 285 insertions(+), 155 deletions(-) diff --git a/backend/src/controllers/v2/workspaceController.ts b/backend/src/controllers/v2/workspaceController.ts index 1d5ad9f60..ec32dcbaf 100644 --- a/backend/src/controllers/v2/workspaceController.ts +++ b/backend/src/controllers/v2/workspaceController.ts @@ -506,10 +506,4 @@ export const toggleAutoCapitalization = async (req: Request, res: Response) => { message: 'Successfully changed autoCapitalization setting', workspace }); -}; - -export const getAak = (req: Request, res: Response) => { - return res.status(200).send({ - message: 'getAak' - }); -} \ No newline at end of file +}; \ No newline at end of file diff --git a/backend/src/helpers/organization.ts b/backend/src/helpers/organization.ts index fb559df1b..0784f446b 100644 --- a/backend/src/helpers/organization.ts +++ b/backend/src/helpers/organization.ts @@ -1,14 +1,70 @@ import * as Sentry from '@sentry/node'; import Stripe from 'stripe'; import { Types } from 'mongoose'; -import { ACCEPTED } from '../variables'; +import { + IUser, + User, + IServiceAccount, + ServiceAccount, + IServiceTokenData, + ServiceTokenData +} from '../models'; import { Organization, MembershipOrg } from '../models'; +import { + ACCEPTED, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_ACCOUNT, + AUTH_MODE_SERVICE_TOKEN, + AUTH_MODE_API_KEY +} from '../variables'; import { getStripeSecretKey, getStripeProductPro, getStripeProductTeam, getStripeProductStarter } from '../config'; +import { + UnauthorizedRequestError +} from '../utils/errors'; + +/** + * Validate accepted clients for organization with id [organizationId] + * @param {Object} obj + * @param {Object} obj.authData - authenticated client details + * @param {Types.ObjectId} obj.organizationId - id of organization to validate against + */ +const validateClientForOrganization = async ({ + authData, + organizationId +}: { + authData: { + authMode: string; + authPayload: IUser | IServiceAccount | IServiceTokenData; + }, + organizationId: string; +}) => { + // TODO + + if (authData.authMode === AUTH_MODE_JWT && authData.authPayload instanceof User) { + // TODO + } + + if (authData.authMode === AUTH_MODE_SERVICE_ACCOUNT && authData.authPayload instanceof ServiceAccount) { + // TODO + } + + if (authData.authMode === AUTH_MODE_SERVICE_TOKEN && authData.authPayload instanceof ServiceTokenData) { + // TODO + } + + if (authData.authMode === AUTH_MODE_API_KEY && authData.authPayload instanceof User) { + // TODO + } + + throw UnauthorizedRequestError({ + message: 'Failed client authorization for organization resource' + }); +} /** * Create an organization with name [name] diff --git a/backend/src/helpers/workspace.ts b/backend/src/helpers/workspace.ts index 97851df33..7b077e7d1 100644 --- a/backend/src/helpers/workspace.ts +++ b/backend/src/helpers/workspace.ts @@ -28,12 +28,10 @@ import { } from '../variables'; /** - * Validate accepted clients for workspace with id [workspaceId] based + * Validate authenticated clients for workspace with id [workspaceId] based * on any known permissions. * @param {Object} obj - * @param {User} obj.user - user client - * @param {ServiceAccount} obj.serviceAccount - service account client - * @param {ServiceTokenData} obj.serviceTokenData - service token client + * @param {Object} obj.authData - authenticated client details * @param {Types.ObjectId} obj.workspaceId - id of workspace to validate against * @param {String} obj.environment - (optional) environment in workspace to validate against * @param {String[]} obj.requiredPermissions - required permissions as part of the endpoint diff --git a/backend/src/middleware/requireAuth.ts b/backend/src/middleware/requireAuth.ts index f55e60676..fd828c89b 100644 --- a/backend/src/middleware/requireAuth.ts +++ b/backend/src/middleware/requireAuth.ts @@ -79,6 +79,12 @@ const requireAuth = ({ break; } + req.requestData = { + ...req.params, + ...req.query, + ...req.body, + } + req.authData = { authMode, authPayload diff --git a/backend/src/middleware/requireWorkspaceAuth.ts b/backend/src/middleware/requireWorkspaceAuth.ts index 31b02b20b..64c1c37f2 100644 --- a/backend/src/middleware/requireWorkspaceAuth.ts +++ b/backend/src/middleware/requireWorkspaceAuth.ts @@ -25,7 +25,7 @@ const requireWorkspaceAuth = ({ requiredPermissions?: string[]; }) => { return async (req: Request, res: Response, next: NextFunction) => { - + const workspaceId = req[locationWorkspaceId]?.workspaceId; const environment = locationEnvironment ? req[locationEnvironment]?.environment : undefined; diff --git a/backend/src/routes/v1/auth.ts b/backend/src/routes/v1/auth.ts index 638e4501b..a3558f341 100644 --- a/backend/src/routes/v1/auth.ts +++ b/backend/src/routes/v1/auth.ts @@ -4,6 +4,7 @@ import { body } from 'express-validator'; import { requireAuth, validateRequest } from '../../middleware'; import { authController } from '../../controllers/v1'; import { authLimiter } from '../../helpers/rateLimiter'; +import { AUTH_MODE_JWT } from '../../variables'; router.post('/token', validateRequest, authController.getNewToken); @@ -29,7 +30,7 @@ router.post( '/logout', authLimiter, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), authController.logout ); @@ -37,7 +38,7 @@ router.post( router.post( '/checkAuth', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), authController.checkAuth ); diff --git a/backend/src/routes/v1/bot.ts b/backend/src/routes/v1/bot.ts index 815a3030e..83e126dc4 100644 --- a/backend/src/routes/v1/bot.ts +++ b/backend/src/routes/v1/bot.ts @@ -8,12 +8,12 @@ import { validateRequest } from '../../middleware'; import { botController } from '../../controllers/v1'; -import { ADMIN, MEMBER } from '../../variables'; +import { ADMIN, MEMBER, AUTH_MODE_JWT } from '../../variables'; router.get( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -27,7 +27,7 @@ router.get( router.patch( '/:botId/active', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireBotAuth({ acceptedRoles: [ADMIN, MEMBER] diff --git a/backend/src/routes/v1/integration.ts b/backend/src/routes/v1/integration.ts index 72d818b61..42b76d88d 100644 --- a/backend/src/routes/v1/integration.ts +++ b/backend/src/routes/v1/integration.ts @@ -6,14 +6,19 @@ import { requireIntegrationAuthorizationAuth, validateRequest } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT, + AUTH_MODE_API_KEY +} from '../../variables'; import { body, param } from 'express-validator'; import { integrationController } from '../../controllers/v1'; router.post( // new: add new integration for integration auth '/', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -35,7 +40,7 @@ router.post( // new: add new integration for integration auth router.patch( '/:integrationId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -54,7 +59,7 @@ router.patch( router.delete( '/:integrationId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuth({ acceptedRoles: [ADMIN, MEMBER] diff --git a/backend/src/routes/v1/integrationAuth.ts b/backend/src/routes/v1/integrationAuth.ts index a81b28d8c..97680983f 100644 --- a/backend/src/routes/v1/integrationAuth.ts +++ b/backend/src/routes/v1/integrationAuth.ts @@ -7,13 +7,18 @@ import { requireIntegrationAuthorizationAuth, validateRequest } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT, + AUTH_MODE_API_KEY +} from '../../variables'; import { integrationAuthController } from '../../controllers/v1'; router.get( '/integration-options', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), integrationAuthController.getIntegrationOptions ); @@ -21,7 +26,7 @@ router.get( router.get( '/:integrationAuthId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -34,7 +39,7 @@ router.get( router.post( '/oauth-token', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -55,7 +60,7 @@ router.post( body('integration').exists().trim().notEmpty(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -67,7 +72,7 @@ router.post( router.get( '/:integrationAuthId/apps', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -81,7 +86,7 @@ router.get( router.get( '/:integrationAuthId/teams', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -94,7 +99,7 @@ router.get( router.delete( '/:integrationAuthId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v1/inviteOrg.ts b/backend/src/routes/v1/inviteOrg.ts index d8e2d67cc..4762711fe 100644 --- a/backend/src/routes/v1/inviteOrg.ts +++ b/backend/src/routes/v1/inviteOrg.ts @@ -3,11 +3,12 @@ const router = express.Router(); import { body } from 'express-validator'; import { requireAuth, validateRequest } from '../../middleware'; import { membershipOrgController } from '../../controllers/v1'; +import { AUTH_MODE_JWT } from '../../variables'; router.post( '/signup', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('inviteeEmail').exists().trim().notEmpty().isEmail(), body('organizationId').exists().trim().notEmpty(), diff --git a/backend/src/routes/v1/key.ts b/backend/src/routes/v1/key.ts index 39693d805..be99c9c17 100644 --- a/backend/src/routes/v1/key.ts +++ b/backend/src/routes/v1/key.ts @@ -6,13 +6,13 @@ import { validateRequest } from '../../middleware'; import { body, param } from 'express-validator'; -import { ADMIN, MEMBER } from '../../variables'; +import { ADMIN, MEMBER, AUTH_MODE_JWT } from '../../variables'; import { keyController } from '../../controllers/v1'; router.post( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -27,7 +27,7 @@ router.post( router.get( '/:workspaceId/latest', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v1/membership.ts b/backend/src/routes/v1/membership.ts index aaacada74..e830bd06d 100644 --- a/backend/src/routes/v1/membership.ts +++ b/backend/src/routes/v1/membership.ts @@ -4,13 +4,14 @@ import { body, param } from 'express-validator'; import { requireAuth, validateRequest } from '../../middleware'; import { membershipController } from '../../controllers/v1'; import { membershipController as EEMembershipControllers } from '../../ee/controllers/v1'; +import { AUTH_MODE_JWT } from '../../variables'; // note: ALL DEPRECIATED (moved to api/v2/workspace/:workspaceId/memberships/:membershipId) router.get( // used for old CLI (deprecate) '/:workspaceId/connect', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('workspaceId').exists().trim(), validateRequest, @@ -20,7 +21,7 @@ router.get( // used for old CLI (deprecate) router.delete( '/:membershipId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('membershipId').exists().trim(), validateRequest, @@ -30,7 +31,7 @@ router.delete( router.post( '/:membershipId/change-role', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('role').exists().trim(), validateRequest, @@ -40,7 +41,7 @@ router.post( router.post( '/:membershipId/deny-permissions', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('membershipId').isMongoId().exists().trim(), body('permissions').isArray().exists(), diff --git a/backend/src/routes/v1/membershipOrg.ts b/backend/src/routes/v1/membershipOrg.ts index 255b836aa..2863c53fb 100644 --- a/backend/src/routes/v1/membershipOrg.ts +++ b/backend/src/routes/v1/membershipOrg.ts @@ -3,12 +3,13 @@ const router = express.Router(); import { param } from 'express-validator'; import { requireAuth, validateRequest } from '../../middleware'; import { membershipOrgController } from '../../controllers/v1'; +import { AUTH_MODE_JWT } from '../../variables'; router.post( // TODO '/membershipOrg/:membershipOrgId/change-role', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('membershipOrgId'), validateRequest, @@ -18,7 +19,7 @@ router.post( router.delete( '/:membershipOrgId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('membershipOrgId').exists().trim(), validateRequest, diff --git a/backend/src/routes/v1/organization.ts b/backend/src/routes/v1/organization.ts index 314f684ad..dded53f3a 100644 --- a/backend/src/routes/v1/organization.ts +++ b/backend/src/routes/v1/organization.ts @@ -6,13 +6,19 @@ import { requireOrganizationAuth, validateRequest } from '../../middleware'; -import { OWNER, ADMIN, MEMBER, ACCEPTED } from '../../variables'; +import { + OWNER, + ADMIN, + MEMBER, + ACCEPTED, + AUTH_MODE_JWT +} from '../../variables'; import { organizationController } from '../../controllers/v1'; router.get( // deprecated (moved to api/v2/users/me/organizations) '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), organizationController.getOrganizations ); @@ -20,7 +26,7 @@ router.get( // deprecated (moved to api/v2/users/me/organizations) router.post( // not used on frontend '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('organizationName').exists().trim().notEmpty(), validateRequest, @@ -30,7 +36,7 @@ router.post( // not used on frontend router.get( '/:organizationId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -44,7 +50,7 @@ router.get( router.get( // deprecated (moved to api/v2/organizations/:organizationId/memberships) '/:organizationId/users', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -58,7 +64,7 @@ router.get( // deprecated (moved to api/v2/organizations/:organizationId/members router.get( '/:organizationId/my-workspaces', // deprecated (moved to api/v2/organizations/:organizationId/workspaces) requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -72,7 +78,7 @@ router.get( router.patch( '/:organizationId/name', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -87,7 +93,7 @@ router.patch( router.get( '/:organizationId/incidentContactOrg', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -101,7 +107,7 @@ router.get( router.post( '/:organizationId/incidentContactOrg', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -116,7 +122,7 @@ router.post( router.delete( '/:organizationId/incidentContactOrg', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -131,7 +137,7 @@ router.delete( router.post( '/:organizationId/customer-portal-session', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -145,7 +151,7 @@ router.post( router.get( '/:organizationId/subscriptions', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -159,7 +165,7 @@ router.get( router.get( '/:organizationId/workspace-memberships', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], diff --git a/backend/src/routes/v1/password.ts b/backend/src/routes/v1/password.ts index bc353cf08..b04fa36af 100644 --- a/backend/src/routes/v1/password.ts +++ b/backend/src/routes/v1/password.ts @@ -4,11 +4,14 @@ import { body } from 'express-validator'; import { requireAuth, requireSignupAuth, validateRequest } from '../../middleware'; import { passwordController } from '../../controllers/v1'; import { passwordLimiter } from '../../helpers/rateLimiter'; +import { + AUTH_MODE_JWT +} from '../../variables'; router.post( '/srp1', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('clientPublicKey').exists().isString().trim().notEmpty(), validateRequest, @@ -19,7 +22,7 @@ router.post( '/change-password', passwordLimiter, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('clientProof').exists().trim().notEmpty(), body('protectedKey').exists().isString().trim().notEmpty(), @@ -62,7 +65,7 @@ router.post( '/backup-private-key', passwordLimiter, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('clientProof').exists().isString().trim().notEmpty(), body('encryptedPrivateKey').exists().isString().trim().notEmpty(), // (backup) private key encrypted under a strong key diff --git a/backend/src/routes/v1/secret.ts b/backend/src/routes/v1/secret.ts index 433c7ac94..e55dfaf43 100644 --- a/backend/src/routes/v1/secret.ts +++ b/backend/src/routes/v1/secret.ts @@ -8,14 +8,18 @@ import { } from '../../middleware'; import { body, query, param } from 'express-validator'; import { secretController } from '../../controllers/v1'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT +} from '../../variables'; // note to devs: these endpoints will be deprecated in favor of v2 router.post( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -33,7 +37,7 @@ router.post( router.get( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v1/serviceToken.ts b/backend/src/routes/v1/serviceToken.ts index f6c2fd360..2b75e7cbf 100644 --- a/backend/src/routes/v1/serviceToken.ts +++ b/backend/src/routes/v1/serviceToken.ts @@ -7,7 +7,11 @@ import { validateRequest } from '../../middleware'; import { body } from 'express-validator'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT +} from '../../variables'; import { serviceTokenController } from '../../controllers/v1'; // note: deprecate service-token routes in favor of service-token data routes/structure @@ -21,7 +25,7 @@ router.get( router.post( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v1/user.ts b/backend/src/routes/v1/user.ts index e73a6e0f2..b9d88dfb1 100644 --- a/backend/src/routes/v1/user.ts +++ b/backend/src/routes/v1/user.ts @@ -2,11 +2,14 @@ import express from 'express'; const router = express.Router(); import { requireAuth } from '../../middleware'; import { userController } from '../../controllers/v1'; +import { + AUTH_MODE_JWT +} from '../../variables'; router.get( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), userController.getUser ); diff --git a/backend/src/routes/v1/userAction.ts b/backend/src/routes/v1/userAction.ts index b14ab3471..c8d21f918 100644 --- a/backend/src/routes/v1/userAction.ts +++ b/backend/src/routes/v1/userAction.ts @@ -3,12 +3,13 @@ const router = express.Router(); import { requireAuth, validateRequest } from '../../middleware'; import { body, query } from 'express-validator'; import { userActionController } from '../../controllers/v1'; +import { AUTH_MODE_JWT } from '../../variables'; // note: [userAction] will be deprecated in /v2 in favor of [action] router.post( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('action'), validateRequest, @@ -18,7 +19,7 @@ router.post( router.get( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), query('action'), validateRequest, diff --git a/backend/src/routes/v1/workspace.ts b/backend/src/routes/v1/workspace.ts index 6eb5d05ea..431a2e4f9 100644 --- a/backend/src/routes/v1/workspace.ts +++ b/backend/src/routes/v1/workspace.ts @@ -6,13 +6,17 @@ import { requireWorkspaceAuth, validateRequest } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT +} from '../../variables'; import { workspaceController, membershipController } from '../../controllers/v1'; router.get( '/:workspaceId/keys', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -26,7 +30,7 @@ router.get( router.get( '/:workspaceId/users', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -40,7 +44,7 @@ router.get( router.get( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), workspaceController.getWorkspaces ); @@ -48,7 +52,7 @@ router.get( router.get( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -62,7 +66,7 @@ router.get( router.post( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('workspaceName').exists().trim().notEmpty(), body('organizationId').exists().trim().notEmpty(), @@ -73,7 +77,7 @@ router.post( router.delete( '/:workspaceId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN], @@ -87,7 +91,7 @@ router.delete( router.post( '/:workspaceId/name', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -102,7 +106,7 @@ router.post( router.post( '/:workspaceId/invite-signup', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -117,7 +121,7 @@ router.post( router.get( '/:workspaceId/integrations', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -131,7 +135,7 @@ router.get( router.get( '/:workspaceId/authorizations', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -145,7 +149,7 @@ router.get( router.get( '/:workspaceId/service-tokens', // deprecate requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v2/apiKeyData.ts b/backend/src/routes/v2/apiKeyData.ts index 07bbcbc44..939bdbe1f 100644 --- a/backend/src/routes/v2/apiKeyData.ts +++ b/backend/src/routes/v2/apiKeyData.ts @@ -1,16 +1,19 @@ import express from 'express'; const router = express.Router(); +import { param, body } from 'express-validator'; import { requireAuth, validateRequest } from '../../middleware'; -import { param, body } from 'express-validator'; import { apiKeyDataController } from '../../controllers/v2'; +import { + AUTH_MODE_JWT +} from '../../variables'; router.get( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), apiKeyDataController.getAPIKeyData ); @@ -18,7 +21,7 @@ router.get( router.post( '/', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('name').exists().trim(), body('expiresIn'), // measured in ms @@ -29,7 +32,7 @@ router.post( router.delete( '/:apiKeyDataId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('apiKeyDataId').exists().trim(), validateRequest, diff --git a/backend/src/routes/v2/environment.ts b/backend/src/routes/v2/environment.ts index 94b7e9df9..0eb4b4a20 100644 --- a/backend/src/routes/v2/environment.ts +++ b/backend/src/routes/v2/environment.ts @@ -7,12 +7,16 @@ import { requireWorkspaceAuth, validateRequest, } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT +} from '../../variables'; router.post( '/:workspaceId/environments', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -28,7 +32,7 @@ router.post( router.put( '/:workspaceId/environments', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -45,7 +49,7 @@ router.put( router.delete( '/:workspaceId/environments', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [ADMIN], @@ -60,7 +64,7 @@ router.delete( router.get( '/:workspaceId/environments', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [MEMBER, ADMIN], @@ -71,4 +75,4 @@ router.get( environmentController.getAllAccessibleEnvironmentsOfWorkspace ); -export default router; +export default router; \ No newline at end of file diff --git a/backend/src/routes/v2/organizations.ts b/backend/src/routes/v2/organizations.ts index 21e2f9cf1..eb2cef8eb 100644 --- a/backend/src/routes/v2/organizations.ts +++ b/backend/src/routes/v2/organizations.ts @@ -7,7 +7,14 @@ import { validateRequest } from '../../middleware'; import { body, param } from 'express-validator'; -import { OWNER, ADMIN, MEMBER, ACCEPTED } from '../../variables'; +import { + OWNER, + ADMIN, + MEMBER, + ACCEPTED, + AUTH_MODE_JWT, + AUTH_MODE_API_KEY +} from '../../variables'; import { organizationsController } from '../../controllers/v2'; // TODO: /POST to create membership @@ -17,7 +24,7 @@ router.get( param('organizationId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -33,7 +40,7 @@ router.patch( body('role').exists().isString().trim().isIn([OWNER, ADMIN, MEMBER]), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN], @@ -52,7 +59,7 @@ router.delete( param('membershipId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN], @@ -70,7 +77,7 @@ router.get( param('organizationId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN], @@ -84,7 +91,7 @@ router.get( param('organizationId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN], diff --git a/backend/src/routes/v2/secret.ts b/backend/src/routes/v2/secret.ts index 0ed79f672..ff9764ced 100644 --- a/backend/src/routes/v2/secret.ts +++ b/backend/src/routes/v2/secret.ts @@ -6,7 +6,12 @@ import { validateRequest } from '../../middleware'; import { body, param, query } from 'express-validator'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_TOKEN +} from '../../variables'; import { CreateSecretRequestBody, ModifySecretRequestBody } from '../../types/secret'; import { secretController } from '../../controllers/v2'; @@ -17,7 +22,7 @@ const router = express.Router(); router.post( '/batch-create/workspace/:workspaceId/environment/:environment', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -34,7 +39,7 @@ router.post( router.post( '/workspace/:workspaceId/environment/:environment', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -53,7 +58,7 @@ router.get( param('workspaceId').exists().trim(), query("environment").exists(), requireAuth({ - acceptedAuthModes: ['jwt', 'serviceToken'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_SERVICE_TOKEN] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -67,7 +72,7 @@ router.get( router.get( '/:secretId', requireAuth({ - acceptedAuthModes: ['jwt', 'serviceToken'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_SERVICE_TOKEN] }), requireSecretAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -79,7 +84,7 @@ router.get( router.delete( '/batch/workspace/:workspaceId/environment/:environmentName', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), param('workspaceId').exists().isMongoId().trim(), param('environmentName').exists().trim(), @@ -95,7 +100,7 @@ router.delete( router.delete( '/:secretId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireSecretAuth({ acceptedRoles: [ADMIN, MEMBER] @@ -108,7 +113,7 @@ router.delete( router.patch( '/batch-modify/workspace/:workspaceId/environment/:environmentName', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('secrets').exists().isArray().custom((secrets: ModifySecretRequestBody[]) => secrets.length > 0), param('workspaceId').exists().isMongoId().trim(), @@ -124,7 +129,7 @@ router.patch( router.patch( '/workspace/:workspaceId/environment/:environmentName', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), body('secret').isObject(), param('workspaceId').exists().isMongoId().trim(), diff --git a/backend/src/routes/v2/secrets.ts b/backend/src/routes/v2/secrets.ts index 8ab9812b3..4ca60513c 100644 --- a/backend/src/routes/v2/secrets.ts +++ b/backend/src/routes/v2/secrets.ts @@ -15,7 +15,11 @@ import { SECRET_PERSONAL, SECRET_SHARED, PERMISSION_READ_SECRETS, - PERMISSION_WRITE_SECRETS + PERMISSION_WRITE_SECRETS, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_ACCOUNT, + AUTH_MODE_SERVICE_TOKEN, + AUTH_MODE_API_KEY } from '../../variables'; import { BatchSecretRequest @@ -24,7 +28,7 @@ import { router.post( '/batch', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey', 'serviceToken'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -100,7 +104,7 @@ router.post( }), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey', 'serviceToken', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, AUTH_MODE_SERVICE_ACCOUNT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -118,7 +122,7 @@ router.get( query('tagSlugs'), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey', 'serviceToken', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, AUTH_MODE_SERVICE_ACCOUNT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -159,7 +163,7 @@ router.patch( }), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey', 'serviceToken', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, AUTH_MODE_SERVICE_ACCOUNT] }), requireSecretsAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -188,7 +192,7 @@ router.delete( .isEmpty(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey', 'serviceToken', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, AUTH_MODE_SERVICE_ACCOUNT] }), requireSecretsAuth({ acceptedRoles: [ADMIN, MEMBER], diff --git a/backend/src/routes/v2/serviceAccounts.ts b/backend/src/routes/v2/serviceAccounts.ts index 9259af89d..fef0c87e9 100644 --- a/backend/src/routes/v2/serviceAccounts.ts +++ b/backend/src/routes/v2/serviceAccounts.ts @@ -13,14 +13,16 @@ import { OWNER, ADMIN, MEMBER, - ACCEPTED + ACCEPTED, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_ACCOUNT } from '../../variables'; import { serviceAccountsController } from '../../controllers/v2'; router.get( // TODO: check '/me', requireAuth({ - acceptedAuthModes: ['serviceAccount'] + acceptedAuthModes: [AUTH_MODE_SERVICE_ACCOUNT] }), serviceAccountsController.getCurrentServiceAccount ); @@ -29,7 +31,7 @@ router.get( '/:serviceAccountId', param('serviceAccountId').exists().isString().trim(), requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -46,7 +48,7 @@ router.post( body('expiresIn').isNumeric(), // measured in ms validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], @@ -61,7 +63,7 @@ router.patch( param('serviceAccountId').exists().isString().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -75,7 +77,7 @@ router.delete( param('serviceAccountId').exists().isString().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -89,7 +91,7 @@ router.get( param('serviceAccountId').exists().isString().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -109,7 +111,7 @@ router.post( body('nonce').exists().isString().notEmpty(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -128,7 +130,7 @@ router.delete( param('serviceAccountWorkspacePermissionId').exists().isString().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], @@ -145,7 +147,7 @@ router.get( '/:serviceAccountId/keys', query('workspaceId').optional().isString(), requireAuth({ - acceptedAuthModes: ['jwt', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_SERVICE_ACCOUNT] }), requireServiceAccountAuth({ acceptedRoles: [OWNER, ADMIN], diff --git a/backend/src/routes/v2/serviceTokenData.ts b/backend/src/routes/v2/serviceTokenData.ts index 8d65e94e8..075d0d392 100644 --- a/backend/src/routes/v2/serviceTokenData.ts +++ b/backend/src/routes/v2/serviceTokenData.ts @@ -10,14 +10,17 @@ import { param, body } from 'express-validator'; import { ADMIN, MEMBER, - PERMISSION_WRITE_SECRETS + PERMISSION_WRITE_SECRETS, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_ACCOUNT, + AUTH_MODE_SERVICE_TOKEN } from '../../variables'; import { serviceTokenDataController } from '../../controllers/v2'; router.get( '/', requireAuth({ - acceptedAuthModes: ['serviceToken'] + acceptedAuthModes: [AUTH_MODE_SERVICE_TOKEN] }), serviceTokenDataController.getServiceTokenData ); @@ -25,7 +28,7 @@ router.get( router.post( '/', requireAuth({ - acceptedAuthModes: ['jwt', 'serviceAccount'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_SERVICE_ACCOUNT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -56,7 +59,7 @@ router.post( router.delete( '/:serviceTokenDataId', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireServiceTokenDataAuth({ acceptedRoles: [ADMIN, MEMBER] diff --git a/backend/src/routes/v2/tags.ts b/backend/src/routes/v2/tags.ts index 271381502..c9a11c1bc 100644 --- a/backend/src/routes/v2/tags.ts +++ b/backend/src/routes/v2/tags.ts @@ -7,12 +7,16 @@ import { requireWorkspaceAuth, validateRequest } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT +} from '../../variables'; router.get( '/:workspaceId/tags', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [MEMBER, ADMIN], @@ -26,7 +30,7 @@ router.get( router.delete( '/tags/:tagId', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), param('tagId').exists().trim(), validateRequest, @@ -36,7 +40,7 @@ router.delete( router.post( '/:workspaceId/tags', requireAuth({ - acceptedAuthModes: ['jwt'], + acceptedAuthModes: [AUTH_MODE_JWT], }), requireWorkspaceAuth({ acceptedRoles: [MEMBER, ADMIN], diff --git a/backend/src/routes/v2/users.ts b/backend/src/routes/v2/users.ts index bdf0978e1..63ae5eee9 100644 --- a/backend/src/routes/v2/users.ts +++ b/backend/src/routes/v2/users.ts @@ -6,11 +6,15 @@ import { } from '../../middleware'; import { body } from 'express-validator'; import { usersController } from '../../controllers/v2'; +import { + AUTH_MODE_JWT, + AUTH_MODE_API_KEY +} from '../../variables'; router.get( '/me', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), usersController.getMe ); @@ -18,7 +22,7 @@ router.get( router.patch( '/me/mfa', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), body('isMfaEnabled').exists().isBoolean(), validateRequest, @@ -28,7 +32,7 @@ router.patch( router.get( '/me/organizations', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), usersController.getMyOrganizations ); diff --git a/backend/src/routes/v2/workspace.ts b/backend/src/routes/v2/workspace.ts index cf58bb7db..d2180624b 100644 --- a/backend/src/routes/v2/workspace.ts +++ b/backend/src/routes/v2/workspace.ts @@ -7,13 +7,19 @@ import { requireWorkspaceAuth, validateRequest } from '../../middleware'; -import { ADMIN, MEMBER } from '../../variables'; +import { + ADMIN, + MEMBER, + AUTH_MODE_JWT, + AUTH_MODE_SERVICE_TOKEN, + AUTH_MODE_API_KEY +} from '../../variables'; import { workspaceController } from '../../controllers/v2'; router.post( '/:workspaceId/secrets', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -31,7 +37,7 @@ router.post( router.get( '/:workspaceId/secrets', requireAuth({ - acceptedAuthModes: ['jwt', 'serviceToken'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_SERVICE_TOKEN] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -47,7 +53,7 @@ router.get( router.get( '/:workspaceId/encrypted-key', requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -61,7 +67,7 @@ router.get( router.get( '/:workspaceId/service-token-data', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -72,14 +78,12 @@ router.get( workspaceController.getWorkspaceServiceTokenData ); -// TODO: /POST to create membership and re-route inviting user to workspace there - router.get( // new - TODO: rewire dashboard to this route '/:workspaceId/memberships', param('workspaceId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -95,7 +99,7 @@ router.patch( // TODO - rewire dashboard to this route body('role').exists().isString().trim().isIn([ADMIN, MEMBER]), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN], @@ -113,7 +117,7 @@ router.delete( // TODO - rewire dashboard to this route param('membershipId').exists().trim(), validateRequest, requireAuth({ - acceptedAuthModes: ['jwt', 'apiKey'] + acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN], @@ -128,7 +132,7 @@ router.delete( // TODO - rewire dashboard to this route router.patch( '/:workspaceId/auto-capitalization', requireAuth({ - acceptedAuthModes: ['jwt'] + acceptedAuthModes: [AUTH_MODE_JWT] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -140,18 +144,4 @@ router.patch( workspaceController.toggleAutoCapitalization ); -router.get( - '/:workspaceId/aak', - requireAuth({ - acceptedAuthModes: ['serviceAccount'] - }), - requireWorkspaceAuth({ - acceptedRoles: [ADMIN, MEMBER], - locationWorkspaceId: 'params' - }), - param('workspaceId').exists().trim(), - validateRequest, - workspaceController.getAak -); - export default router; diff --git a/backend/src/types/express/index.d.ts b/backend/src/types/express/index.d.ts index 89604e177..bff5e96c3 100644 --- a/backend/src/types/express/index.d.ts +++ b/backend/src/types/express/index.d.ts @@ -1,5 +1,10 @@ import * as express from 'express'; -import { ISecret } from '../../models'; +import { + IUser, + IServiceAccount, + IServiceTokenData, + ISecret +} from '../../models'; // TODO: fix (any) types declare global { @@ -24,7 +29,13 @@ declare global { serviceTokenData: any; apiKeyData: any; query?: any; - authData: any; + authData: { + authMode: string; + authPayload: IUser | IServiceAccount | IServiceTokenData; + }; + requestData: { + [key: string]: string + }; } } }