From 90cfac9b527e9c197d301cb36b322b8aa77371cf Mon Sep 17 00:00:00 2001 From: shimon Date: Fri, 12 Aug 2022 14:01:12 +0300 Subject: [PATCH] replace request param extractions --- app/controllers/api/account.php | 10 +++++++++- app/controllers/api/databases.php | 1 - app/controllers/api/teams.php | 2 ++ app/controllers/shared/api.php | 20 +++++--------------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 95f6a41e8d..a279981271 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -544,7 +544,9 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $dbForProject->deleteCachedDocument('users', $user->getId()); - $audits->setResource('user/' . $user->getId()); + $audits->setResource('user/' . $user->getId()) + ->setUser($user) + ; $usage ->setParam('users.sessions.create', 1) @@ -715,6 +717,7 @@ App::put('/v1/account/sessions/magic-url') ->label('scope', 'public') ->label('event', 'users.[userId].sessions.[sessionId].create') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{response.userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') ->label('sdk.method', 'updateMagicURLSession') @@ -941,6 +944,7 @@ App::put('/v1/account/sessions/phone') ->label('scope', 'public') ->label('event', 'users.[userId].sessions.[sessionId].create') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{response.userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') ->label('sdk.method', 'updatePhoneSession') @@ -1050,6 +1054,7 @@ App::post('/v1/account/sessions/anonymous') ->label('scope', 'public') ->label('auth.type', 'anonymous') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') ->label('sdk.method', 'createAnonymousSession') @@ -1722,6 +1727,7 @@ App::patch('/v1/account/sessions/:sessionId') ->label('scope', 'account') ->label('event', 'users.[userId].sessions.[sessionId].update') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{response.userId}') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'updateSession') @@ -1979,6 +1985,7 @@ App::put('/v1/account/recovery') ->label('scope', 'public') ->label('event', 'users.[userId].recovery.[tokenId].update') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{response.userId}') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'updateRecovery') @@ -2047,6 +2054,7 @@ App::post('/v1/account/verification') ->label('scope', 'account') ->label('event', 'users.[userId].verification.[tokenId].create') ->label('audits.resource', 'user/{response.userId}') + ->label('audits.userId', '{userId}') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'createVerification') diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index a25752f1da..1d7929ba91 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -720,7 +720,6 @@ App::put('/v1/databases/:databaseId/collections/:collectionId') ->label('scope', 'collections.write') ->label('event', 'databases.[databaseId].collections.[collectionId].update') ->label('audits.resource', 'database/{request.databaseId}/collection/{request.collectionId}') - ->label('audits-payload', true) ->label('sdk.auth', [APP_AUTH_TYPE_KEY]) ->label('sdk.namespace', 'databases') ->label('sdk.method', 'updateCollection') diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 6c58ac2a91..7a4e26f2db 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -264,6 +264,7 @@ App::post('/v1/teams/:teamId/memberships') ->label('scope', 'teams.write') ->label('auth.type', 'invites') ->label('audits.resource', 'team/{request.teamId}') + ->label('audits.userId', '{request.userId}') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'teams') ->label('sdk.method', 'createMembership') @@ -613,6 +614,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') ->label('event', 'teams.[teamId].memberships.[membershipId].update.status') ->label('scope', 'public') ->label('audits.resource', 'team/{request.teamId}') + ->label('audits.userId', '{request.userId}') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'teams') ->label('sdk.method', 'updateMembershipStatus') diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 881d79181a..7c3792c88d 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -254,21 +254,11 @@ App::shutdown() } $route = $utopia->match($request); + $requestParams = array_combine( + array_keys($route->getParams()), array_column($route->getParams(), 'value') + ); - $getRequestParams = function () use ($route, $request) { - $url = \parse_url($request->getURI(), PHP_URL_PATH); - $regex = '@' . \preg_replace('@:[^/]+@', '([^/]+)', $route->getPath()) . '@'; - \preg_match($regex, $url, $matches); - \array_shift($matches); - $url = $route->getIsAlias() ? $route->getAliasPath() : $route->getPath(); - $keyRegex = '@^' . \preg_replace('@:[^/]+@', ':([^/]+)', $url) . '$@'; - \preg_match($keyRegex, $url, $keys); - \array_shift($keys); - - return \array_combine($keys, $matches) ?? []; - }; - - $parseLabel = function ($label) use ($responsePayload, $getRequestParams) { + $parseLabel = function ($label) use ($responsePayload, $requestParams) { preg_match_all('/{(.*?)}/', $label, $matches); foreach ($matches[1] ?? [] as $pos => $match) { $find = $matches[0][$pos]; @@ -282,7 +272,7 @@ App::shutdown() $replace = $parts[1]; $params = match ($namespace) { - 'request' => $getRequestParams(), + 'request' => $requestParams, default => $responsePayload, };