Refactor names and cleanup code
This commit is contained in:
parent
0b17a737fe
commit
c0daed3644
19
app/cli.php
19
app/cli.php
|
@ -153,34 +153,31 @@ CLI::setResource('influxdb', function (Registry $register) {
|
||||||
CLI::setResource('queue', function (Group $pools) {
|
CLI::setResource('queue', function (Group $pools) {
|
||||||
return $pools->get('queue')->pop()->getResource();
|
return $pools->get('queue')->pop()->getResource();
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
CLI::setResource('messaging', function (Connection $queue) {
|
CLI::setResource('queueForMessaging', function (Connection $queue) {
|
||||||
return new Phone($queue);
|
return new Phone($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('mails', function (Connection $queue) {
|
CLI::setResource('queueForMail', function (Connection $queue) {
|
||||||
return new Mail($queue);
|
return new Mail($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('builds', function (Connection $queue) {
|
CLI::setResource('queueForBuilds', function (Connection $queue) {
|
||||||
return new Build($queue);
|
return new Build($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('database', function (Connection $queue) {
|
CLI::setResource('queueForDatabase', function (Connection $queue) {
|
||||||
return new EventDatabase($queue);
|
return new EventDatabase($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('deletes', function (Connection $queue) {
|
CLI::setResource('queueForDeletes', function (Connection $queue) {
|
||||||
return new Delete($queue);
|
return new Delete($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('events', function (Connection $queue) {
|
CLI::setResource('queueForEvents', function (Connection $queue) {
|
||||||
return new Event('', '', $queue);
|
return new Event('', '', $queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('audits', function (Connection $queue) {
|
CLI::setResource('queueForAudits', function (Connection $queue) {
|
||||||
return new Audit($queue);
|
return new Audit($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('events', function (Connection $queue) {
|
|
||||||
return new Event('', '', $queue);
|
|
||||||
}, ['queue']);
|
|
||||||
CLI::setResource('queueForFunctions', function (Connection $queue) {
|
CLI::setResource('queueForFunctions', function (Connection $queue) {
|
||||||
return new Func($queue);
|
return new Func($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('certificates', function (Connection $queue) {
|
CLI::setResource('queueForCertificates', function (Connection $queue) {
|
||||||
return new Certificate($queue);
|
return new Certificate($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
CLI::setResource('logError', function (Registry $register) {
|
CLI::setResource('logError', function (Registry $register) {
|
||||||
|
|
|
@ -70,8 +70,8 @@ App::post('/v1/account')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$email = \strtolower($email);
|
$email = \strtolower($email);
|
||||||
if ('console' === $project->getId()) {
|
if ('console' === $project->getId()) {
|
||||||
|
@ -130,7 +130,7 @@ App::post('/v1/account')
|
||||||
Authorization::setRole(Role::user($user->getId())->toString());
|
Authorization::setRole(Role::user($user->getId())->toString());
|
||||||
Authorization::setRole(Role::users()->toString());
|
Authorization::setRole(Role::users()->toString());
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -166,8 +166,8 @@ App::post('/v1/account/sessions/email')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) {
|
->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
|
||||||
|
|
||||||
$email = \strtolower($email);
|
$email = \strtolower($email);
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
|
@ -247,7 +247,7 @@ App::post('/v1/account/sessions/email')
|
||||||
->setAttribute('expire', $expire)
|
->setAttribute('expire', $expire)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $profile->getId())
|
->setParam('userId', $profile->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
;
|
;
|
||||||
|
@ -386,8 +386,8 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $provider, string $code, string $state, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Reader $geodb, Event $events) use ($oauthDefaultSuccess) {
|
->action(function (string $provider, string $code, string $state, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Reader $geodb, Event $queueForEvents) use ($oauthDefaultSuccess) {
|
||||||
|
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
$callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId();
|
$callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId();
|
||||||
|
@ -574,7 +574,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
||||||
|
|
||||||
$session->setAttribute('expire', $expire);
|
$session->setAttribute('expire', $expire);
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
->setPayload($response->output($session, Response::MODEL_SESSION))
|
->setPayload($response->output($session, Response::MODEL_SESSION))
|
||||||
|
@ -630,9 +630,9 @@ App::post('/v1/account/sessions/magic-url')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mails')
|
->inject('queueForMail')
|
||||||
->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $events, Mail $mails) {
|
->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) {
|
||||||
|
|
||||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
|
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
|
||||||
|
@ -714,7 +714,7 @@ App::post('/v1/account/sessions/magic-url')
|
||||||
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $loginSecret, 'expire' => $expire, 'project' => $project->getId()]);
|
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $loginSecret, 'expire' => $expire, 'project' => $project->getId()]);
|
||||||
$url = Template::unParseURL($url);
|
$url = Template::unParseURL($url);
|
||||||
|
|
||||||
$mails
|
$queueForMail
|
||||||
->setType(MAIL_TYPE_MAGIC_SESSION)
|
->setType(MAIL_TYPE_MAGIC_SESSION)
|
||||||
->setRecipient($user->getAttribute('email'))
|
->setRecipient($user->getAttribute('email'))
|
||||||
->setUrl($url)
|
->setUrl($url)
|
||||||
|
@ -722,7 +722,7 @@ App::post('/v1/account/sessions/magic-url')
|
||||||
->trigger()
|
->trigger()
|
||||||
;
|
;
|
||||||
|
|
||||||
$events->setPayload(
|
$queueForEvents->setPayload(
|
||||||
$response->output(
|
$response->output(
|
||||||
$token->setAttribute('secret', $loginSecret),
|
$token->setAttribute('secret', $loginSecret),
|
||||||
Response::MODEL_TOKEN
|
Response::MODEL_TOKEN
|
||||||
|
@ -765,8 +765,8 @@ App::put('/v1/account/sessions/magic-url')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) {
|
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
|
||||||
|
|
||||||
/** @var Utopia\Database\Document $user */
|
/** @var Utopia\Database\Document $user */
|
||||||
|
|
||||||
|
@ -832,7 +832,7 @@ App::put('/v1/account/sessions/magic-url')
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
;
|
;
|
||||||
|
@ -883,9 +883,9 @@ App::post('/v1/account/sessions/phone')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('messaging')
|
->inject('queueForMessaging')
|
||||||
->action(function (string $userId, string $phone, Request $request, Response $response, Document $project, Database $dbForProject, Event $events, EventPhone $messaging) {
|
->action(function (string $userId, string $phone, Request $request, Response $response, Document $project, Database $dbForProject, Event $queueForEvents, EventPhone $queueForMessaging) {
|
||||||
|
|
||||||
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
|
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
|
||||||
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured');
|
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured');
|
||||||
|
@ -959,12 +959,12 @@ App::post('/v1/account/sessions/phone')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$messaging
|
$queueForMessaging
|
||||||
->setRecipient($phone)
|
->setRecipient($phone)
|
||||||
->setMessage($secret)
|
->setMessage($secret)
|
||||||
->trigger();
|
->trigger();
|
||||||
|
|
||||||
$events->setPayload(
|
$queueForEvents->setPayload(
|
||||||
$response->output(
|
$response->output(
|
||||||
$token->setAttribute('secret', $secret),
|
$token->setAttribute('secret', $secret),
|
||||||
Response::MODEL_TOKEN
|
Response::MODEL_TOKEN
|
||||||
|
@ -1004,8 +1004,8 @@ App::put('/v1/account/sessions/phone')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) {
|
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
$user = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
||||||
|
|
||||||
|
@ -1067,7 +1067,7 @@ App::put('/v1/account/sessions/phone')
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
;
|
;
|
||||||
|
@ -1122,8 +1122,8 @@ App::post('/v1/account/sessions/anonymous')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $events) {
|
->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $queueForEvents) {
|
||||||
|
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
|
|
||||||
|
@ -1203,7 +1203,7 @@ App::post('/v1/account/sessions/anonymous')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
;
|
;
|
||||||
|
@ -1475,14 +1475,14 @@ App::patch('/v1/account/name')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user
|
||||||
->setAttribute('name', $name)
|
->setAttribute('name', $name)
|
||||||
->setAttribute('search', implode(' ', [$user->getId(), $name, $user->getAttribute('email', ''), $user->getAttribute('phone', '')])));
|
->setAttribute('search', implode(' ', [$user->getId(), $name, $user->getAttribute('email', ''), $user->getAttribute('phone', '')])));
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||||
});
|
});
|
||||||
|
@ -1508,8 +1508,8 @@ App::patch('/v1/account/password')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
// Check old password only if its an existing user.
|
// Check old password only if its an existing user.
|
||||||
if (!empty($user->getAttribute('passwordUpdate')) && !Auth::passwordVerify($oldPassword, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password
|
if (!empty($user->getAttribute('passwordUpdate')) && !Auth::passwordVerify($oldPassword, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password
|
||||||
|
@ -1522,7 +1522,7 @@ App::patch('/v1/account/password')
|
||||||
->setAttribute('hashOptions', Auth::DEFAULT_ALGO_OPTIONS)
|
->setAttribute('hashOptions', Auth::DEFAULT_ALGO_OPTIONS)
|
||||||
->setAttribute('passwordUpdate', DateTime::now()));
|
->setAttribute('passwordUpdate', DateTime::now()));
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||||
});
|
});
|
||||||
|
@ -1547,8 +1547,8 @@ App::patch('/v1/account/email')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $email, string $password, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $email, string $password, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
$isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting
|
$isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -1574,7 +1574,7 @@ App::patch('/v1/account/email')
|
||||||
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||||
});
|
});
|
||||||
|
@ -1599,8 +1599,8 @@ App::patch('/v1/account/phone')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $phone, string $password, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $phone, string $password, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting
|
$isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting
|
||||||
|
|
||||||
|
@ -1622,7 +1622,7 @@ App::patch('/v1/account/phone')
|
||||||
throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
|
throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||||
});
|
});
|
||||||
|
@ -1646,12 +1646,12 @@ App::patch('/v1/account/prefs')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs));
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
$response->dynamic($user, Response::MODEL_ACCOUNT);
|
||||||
});
|
});
|
||||||
|
@ -1675,12 +1675,12 @@ App::patch('/v1/account/status')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', false));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', false));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setPayload($response->output($user, Response::MODEL_ACCOUNT));
|
->setPayload($response->output($user, Response::MODEL_ACCOUNT));
|
||||||
|
|
||||||
|
@ -1712,9 +1712,9 @@ App::delete('/v1/account/sessions/:sessionId')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $events, Document $project) {
|
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Document $project) {
|
||||||
|
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||||
|
@ -1752,7 +1752,7 @@ App::delete('/v1/account/sessions/:sessionId')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
->setPayload($response->output($session, Response::MODEL_SESSION))
|
->setPayload($response->output($session, Response::MODEL_SESSION))
|
||||||
|
@ -1788,8 +1788,8 @@ App::patch('/v1/account/sessions/:sessionId')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $events) {
|
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $queueForEvents) {
|
||||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||||
$sessionId = ($sessionId === 'current')
|
$sessionId = ($sessionId === 'current')
|
||||||
? Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration)
|
? Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration)
|
||||||
|
@ -1837,7 +1837,7 @@ App::patch('/v1/account/sessions/:sessionId')
|
||||||
|
|
||||||
$session->setAttribute('expire', DateTime::addSeconds(new \DateTime($session->getCreatedAt()), $authDuration));
|
$session->setAttribute('expire', DateTime::addSeconds(new \DateTime($session->getCreatedAt()), $authDuration));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId())
|
->setParam('sessionId', $session->getId())
|
||||||
->setPayload($response->output($session, Response::MODEL_SESSION))
|
->setPayload($response->output($session, Response::MODEL_SESSION))
|
||||||
|
@ -1870,8 +1870,8 @@ App::delete('/v1/account/sessions')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $events) {
|
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents) {
|
||||||
|
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
$sessions = $user->getAttribute('sessions', []);
|
$sessions = $user->getAttribute('sessions', []);
|
||||||
|
@ -1898,13 +1898,13 @@ App::delete('/v1/account/sessions')
|
||||||
->addCookie(Auth::$cookieName, '', \time() - 3600, '/', Config::getParam('cookieDomain'), ('https' == $protocol), true, Config::getParam('cookieSamesite'));
|
->addCookie(Auth::$cookieName, '', \time() - 3600, '/', Config::getParam('cookieDomain'), ('https' == $protocol), true, Config::getParam('cookieSamesite'));
|
||||||
|
|
||||||
// Use current session for events.
|
// Use current session for events.
|
||||||
$events->setPayload($response->output($session, Response::MODEL_SESSION));
|
$queueForEvents->setPayload($response->output($session, Response::MODEL_SESSION));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $session->getId());
|
->setParam('sessionId', $session->getId());
|
||||||
|
|
||||||
|
@ -1936,9 +1936,9 @@ App::post('/v1/account/recovery')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('mails')
|
->inject('queueForMail')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $mails, Event $events) {
|
->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $queueForMail, Event $queueForEvents) {
|
||||||
|
|
||||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
||||||
|
@ -1991,7 +1991,7 @@ App::post('/v1/account/recovery')
|
||||||
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $profile->getId(), 'secret' => $secret, 'expire' => $expire]);
|
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $profile->getId(), 'secret' => $secret, 'expire' => $expire]);
|
||||||
$url = Template::unParseURL($url);
|
$url = Template::unParseURL($url);
|
||||||
|
|
||||||
$mails
|
$queueForMail
|
||||||
->setType(MAIL_TYPE_RECOVERY)
|
->setType(MAIL_TYPE_RECOVERY)
|
||||||
->setRecipient($profile->getAttribute('email', ''))
|
->setRecipient($profile->getAttribute('email', ''))
|
||||||
->setUrl($url)
|
->setUrl($url)
|
||||||
|
@ -2000,7 +2000,7 @@ App::post('/v1/account/recovery')
|
||||||
->trigger();
|
->trigger();
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $profile->getId())
|
->setParam('userId', $profile->getId())
|
||||||
->setParam('tokenId', $recovery->getId())
|
->setParam('tokenId', $recovery->getId())
|
||||||
->setUser($profile)
|
->setUser($profile)
|
||||||
|
@ -2042,8 +2042,8 @@ App::put('/v1/account/recovery')
|
||||||
->param('passwordAgain', '', new Password(), 'Repeat new user password. Must be at least 8 chars.')
|
->param('passwordAgain', '', new Password(), 'Repeat new user password. Must be at least 8 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
if ($password !== $passwordAgain) {
|
if ($password !== $passwordAgain) {
|
||||||
throw new Exception(Exception::USER_PASSWORD_MISMATCH);
|
throw new Exception(Exception::USER_PASSWORD_MISMATCH);
|
||||||
}
|
}
|
||||||
|
@ -2079,7 +2079,7 @@ App::put('/v1/account/recovery')
|
||||||
$dbForProject->deleteDocument('tokens', $recovery);
|
$dbForProject->deleteDocument('tokens', $recovery);
|
||||||
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $profile->getId())
|
->setParam('userId', $profile->getId())
|
||||||
->setParam('tokenId', $recoveryDocument->getId())
|
->setParam('tokenId', $recoveryDocument->getId())
|
||||||
;
|
;
|
||||||
|
@ -2111,9 +2111,9 @@ App::post('/v1/account/verification')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mails')
|
->inject('queueForMail')
|
||||||
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $events, Mail $mails) {
|
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) {
|
||||||
|
|
||||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
||||||
|
@ -2151,7 +2151,7 @@ App::post('/v1/account/verification')
|
||||||
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $verificationSecret, 'expire' => $expire]);
|
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $verificationSecret, 'expire' => $expire]);
|
||||||
$url = Template::unParseURL($url);
|
$url = Template::unParseURL($url);
|
||||||
|
|
||||||
$mails
|
$queueForMail
|
||||||
->setType(MAIL_TYPE_VERIFICATION)
|
->setType(MAIL_TYPE_VERIFICATION)
|
||||||
->setRecipient($user->getAttribute('email'))
|
->setRecipient($user->getAttribute('email'))
|
||||||
->setUrl($url)
|
->setUrl($url)
|
||||||
|
@ -2160,7 +2160,7 @@ App::post('/v1/account/verification')
|
||||||
->trigger()
|
->trigger()
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('tokenId', $verification->getId())
|
->setParam('tokenId', $verification->getId())
|
||||||
->setPayload($response->output(
|
->setPayload($response->output(
|
||||||
|
@ -2199,8 +2199,8 @@ App::put('/v1/account/verification')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
||||||
|
|
||||||
|
@ -2228,7 +2228,7 @@ App::put('/v1/account/verification')
|
||||||
$dbForProject->deleteDocument('tokens', $verification);
|
$dbForProject->deleteDocument('tokens', $verification);
|
||||||
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('tokenId', $verificationDocument->getId())
|
->setParam('tokenId', $verificationDocument->getId())
|
||||||
;
|
;
|
||||||
|
@ -2257,9 +2257,9 @@ App::post('/v1/account/verification/phone')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('messaging')
|
->inject('queueForMessaging')
|
||||||
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events, EventPhone $messaging) {
|
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, EventPhone $queueForMessaging) {
|
||||||
|
|
||||||
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
|
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
|
||||||
throw new Exception(Exception::GENERAL_PHONE_DISABLED);
|
throw new Exception(Exception::GENERAL_PHONE_DISABLED);
|
||||||
|
@ -2298,13 +2298,13 @@ App::post('/v1/account/verification/phone')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$messaging
|
$queueForMessaging
|
||||||
->setRecipient($user->getAttribute('phone'))
|
->setRecipient($user->getAttribute('phone'))
|
||||||
->setMessage($secret)
|
->setMessage($secret)
|
||||||
->trigger()
|
->trigger()
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('tokenId', $verification->getId())
|
->setParam('tokenId', $verification->getId())
|
||||||
->setPayload($response->output(
|
->setPayload($response->output(
|
||||||
|
@ -2343,8 +2343,8 @@ App::put('/v1/account/verification/phone')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
|
||||||
|
|
||||||
|
@ -2370,7 +2370,7 @@ App::put('/v1/account/verification/phone')
|
||||||
$dbForProject->deleteDocument('tokens', $verification);
|
$dbForProject->deleteDocument('tokens', $verification);
|
||||||
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('tokenId', $verificationDocument->getId())
|
->setParam('tokenId', $verificationDocument->getId())
|
||||||
;
|
;
|
||||||
|
|
|
@ -55,7 +55,7 @@ use MaxMind\Db\Reader;
|
||||||
* @return Document Newly created attribute document
|
* @return Document Newly created attribute document
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
function createAttribute(string $databaseId, string $collectionId, Document $attribute, Response $response, Database $dbForProject, EventDatabase $database, Event $events): Document
|
function createAttribute(string $databaseId, string $collectionId, Document $attribute, Response $response, Database $dbForProject, EventDatabase $database, Event $queueForEvents): Document
|
||||||
{
|
{
|
||||||
$key = $attribute->getAttribute('key');
|
$key = $attribute->getAttribute('key');
|
||||||
$type = $attribute->getAttribute('type', '');
|
$type = $attribute->getAttribute('type', '');
|
||||||
|
@ -134,7 +134,7 @@ function createAttribute(string $databaseId, string $collectionId, Document $att
|
||||||
->setDocument($attribute)
|
->setDocument($attribute)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setContext('collection', $collection)
|
->setContext('collection', $collection)
|
||||||
->setContext('database', $db)
|
->setContext('database', $db)
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
|
@ -166,8 +166,8 @@ App::post('/v1/databases')
|
||||||
->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.')
|
->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId;
|
$databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId;
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ App::post('/v1/databases')
|
||||||
throw new Exception(Exception::DATABASE_ALREADY_EXISTS);
|
throw new Exception(Exception::DATABASE_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('databaseId', $database->getId());
|
$queueForEvents->setParam('databaseId', $database->getId());
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -400,8 +400,8 @@ App::put('/v1/databases/:databaseId')
|
||||||
->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.')
|
->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$database = $dbForProject->getDocument('databases', $databaseId);
|
$database = $dbForProject->getDocument('databases', $databaseId);
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ App::put('/v1/databases/:databaseId')
|
||||||
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage());
|
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('databaseId', $database->getId());
|
$queueForEvents->setParam('databaseId', $database->getId());
|
||||||
|
|
||||||
$response->dynamic($database, Response::MODEL_DATABASE);
|
$response->dynamic($database, Response::MODEL_DATABASE);
|
||||||
});
|
});
|
||||||
|
@ -441,9 +441,9 @@ App::delete('/v1/databases/:databaseId')
|
||||||
->param('databaseId', '', new UID(), 'Database ID.')
|
->param('databaseId', '', new UID(), 'Database ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $databaseId, Response $response, Database $dbForProject, Event $events, Delete $deletes) {
|
->action(function (string $databaseId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$database = $dbForProject->getDocument('databases', $databaseId);
|
$database = $dbForProject->getDocument('databases', $databaseId);
|
||||||
|
|
||||||
|
@ -457,12 +457,12 @@ App::delete('/v1/databases/:databaseId')
|
||||||
|
|
||||||
$dbForProject->deleteCachedCollection('databases' . $database->getInternalId());
|
$dbForProject->deleteCachedCollection('databases' . $database->getInternalId());
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($database)
|
->setDocument($database)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $database->getId())
|
->setParam('databaseId', $database->getId())
|
||||||
->setPayload($response->output($database, Response::MODEL_DATABASE))
|
->setPayload($response->output($database, Response::MODEL_DATABASE))
|
||||||
;
|
;
|
||||||
|
@ -494,8 +494,8 @@ App::post('/v1/databases/:databaseId/collections')
|
||||||
->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true)
|
->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ App::post('/v1/databases/:databaseId/collections')
|
||||||
throw new Exception(Exception::COLLECTION_LIMIT_EXCEEDED);
|
throw new Exception(Exception::COLLECTION_LIMIT_EXCEEDED);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setContext('database', $database)
|
->setContext('database', $database)
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId());
|
->setParam('collectionId', $collection->getId());
|
||||||
|
@ -750,8 +750,8 @@ App::put('/v1/databases/:databaseId/collections/:collectionId')
|
||||||
->param('enabled', true, new Boolean(), 'Is collection enabled?', true)
|
->param('enabled', true, new Boolean(), 'Is collection enabled?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, bool $enabled, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, bool $enabled, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -785,7 +785,7 @@ App::put('/v1/databases/:databaseId/collections/:collectionId')
|
||||||
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage());
|
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setContext('database', $database)
|
->setContext('database', $database)
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId());
|
->setParam('collectionId', $collection->getId());
|
||||||
|
@ -813,9 +813,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId')
|
||||||
->param('collectionId', '', new UID(), 'Collection ID.')
|
->param('collectionId', '', new UID(), 'Collection ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $events, Delete $deletes) {
|
->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -835,12 +835,12 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId')
|
||||||
|
|
||||||
$dbForProject->deleteCachedCollection('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId());
|
$dbForProject->deleteCachedCollection('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId());
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($collection)
|
->setDocument($collection)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setContext('database', $database)
|
->setContext('database', $database)
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
|
@ -876,9 +876,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/string
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?int $size, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?int $size, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
// Ensure attribute default is within required size
|
// Ensure attribute default is within required size
|
||||||
$validator = new Text($size);
|
$validator = new Text($size);
|
||||||
|
@ -893,7 +893,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/string
|
||||||
'required' => $required,
|
'required' => $required,
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -925,9 +925,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/email'
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
|
@ -937,7 +937,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/email'
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
'format' => APP_DATABASE_ATTRIBUTE_EMAIL,
|
'format' => APP_DATABASE_ATTRIBUTE_EMAIL,
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -970,9 +970,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/enum')
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, array $elements, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, array $elements, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
// use length of longest string as attribute size
|
// use length of longest string as attribute size
|
||||||
$size = 0;
|
$size = 0;
|
||||||
|
@ -997,7 +997,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/enum')
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
'format' => APP_DATABASE_ATTRIBUTE_ENUM,
|
'format' => APP_DATABASE_ATTRIBUTE_ENUM,
|
||||||
'formatOptions' => ['elements' => $elements],
|
'formatOptions' => ['elements' => $elements],
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -1029,9 +1029,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/ip')
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
|
@ -1041,7 +1041,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/ip')
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
'format' => APP_DATABASE_ATTRIBUTE_IP,
|
'format' => APP_DATABASE_ATTRIBUTE_IP,
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -1073,9 +1073,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/url')
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
|
@ -1085,7 +1085,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/url')
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
'format' => APP_DATABASE_ATTRIBUTE_URL,
|
'format' => APP_DATABASE_ATTRIBUTE_URL,
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -1119,9 +1119,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/intege
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?int $min, ?int $max, ?int $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?int $min, ?int $max, ?int $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
// Ensure attribute default is within range
|
// Ensure attribute default is within range
|
||||||
$min = (is_null($min)) ? PHP_INT_MIN : \intval($min);
|
$min = (is_null($min)) ? PHP_INT_MIN : \intval($min);
|
||||||
|
@ -1151,7 +1151,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/intege
|
||||||
'min' => $min,
|
'min' => $min,
|
||||||
'max' => $max,
|
'max' => $max,
|
||||||
],
|
],
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$formatOptions = $attribute->getAttribute('formatOptions', []);
|
$formatOptions = $attribute->getAttribute('formatOptions', []);
|
||||||
|
|
||||||
|
@ -1192,9 +1192,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/float'
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?float $min, ?float $max, ?float $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?float $min, ?float $max, ?float $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
// Ensure attribute default is within range
|
// Ensure attribute default is within range
|
||||||
$min = (is_null($min)) ? -PHP_FLOAT_MAX : \floatval($min);
|
$min = (is_null($min)) ? -PHP_FLOAT_MAX : \floatval($min);
|
||||||
|
@ -1227,7 +1227,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/float'
|
||||||
'min' => $min,
|
'min' => $min,
|
||||||
'max' => $max,
|
'max' => $max,
|
||||||
],
|
],
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$formatOptions = $attribute->getAttribute('formatOptions', []);
|
$formatOptions = $attribute->getAttribute('formatOptions', []);
|
||||||
|
|
||||||
|
@ -1266,9 +1266,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/boolea
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?bool $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?bool $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
|
@ -1277,7 +1277,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/boolea
|
||||||
'required' => $required,
|
'required' => $required,
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -1310,9 +1310,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/dateti
|
||||||
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
->param('array', false, new Boolean(), 'Is attribute an array?', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
$attribute = createAttribute($databaseId, $collectionId, new Document([
|
||||||
'key' => $key,
|
'key' => $key,
|
||||||
|
@ -1322,7 +1322,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/dateti
|
||||||
'default' => $default,
|
'default' => $default,
|
||||||
'array' => $array,
|
'array' => $array,
|
||||||
'filters' => ['datetime']
|
'filters' => ['datetime']
|
||||||
]), $response, $dbForProject, $database, $events);
|
]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
->setStatusCode(Response::STATUS_CODE_ACCEPTED)
|
||||||
|
@ -1461,9 +1461,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key
|
||||||
->param('key', '', new Key(), 'Attribute Key.')
|
->param('key', '', new Key(), 'Attribute Key.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -1490,7 +1490,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key
|
||||||
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
||||||
$dbForProject->deleteCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId());
|
$dbForProject->deleteCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId());
|
||||||
|
|
||||||
$database
|
$queueForDatabase
|
||||||
->setType(DATABASE_TYPE_DELETE_ATTRIBUTE)
|
->setType(DATABASE_TYPE_DELETE_ATTRIBUTE)
|
||||||
->setCollection($collection)
|
->setCollection($collection)
|
||||||
->setDatabase($db)
|
->setDatabase($db)
|
||||||
|
@ -1516,7 +1516,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key
|
||||||
default => Response::MODEL_ATTRIBUTE,
|
default => Response::MODEL_ATTRIBUTE,
|
||||||
};
|
};
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('attributeId', $attribute->getId())
|
->setParam('attributeId', $attribute->getId())
|
||||||
|
@ -1553,9 +1553,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes')
|
||||||
->param('orders', [], new ArrayList(new WhiteList(['ASC', 'DESC'], false, Database::VAR_STRING), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Array of index orders. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' orders are allowed.', true)
|
->param('orders', [], new ArrayList(new WhiteList(['ASC', 'DESC'], false, Database::VAR_STRING), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Array of index orders. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' orders are allowed.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, string $type, array $attributes, array $orders, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, string $type, array $attributes, array $orders, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -1658,14 +1658,14 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
||||||
|
|
||||||
$database
|
$queueForDatabase
|
||||||
->setType(DATABASE_TYPE_CREATE_INDEX)
|
->setType(DATABASE_TYPE_CREATE_INDEX)
|
||||||
->setDatabase($db)
|
->setDatabase($db)
|
||||||
->setCollection($collection)
|
->setCollection($collection)
|
||||||
->setDocument($index)
|
->setDocument($index)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('indexId', $index->getId())
|
->setParam('indexId', $index->getId())
|
||||||
|
@ -1786,9 +1786,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/indexes/:key')
|
||||||
->param('key', '', new Key(), 'Index Key.')
|
->param('key', '', new Key(), 'Index Key.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) {
|
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
|
||||||
|
|
||||||
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -1814,14 +1814,14 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/indexes/:key')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
$dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
|
||||||
|
|
||||||
$database
|
$queueForDatabase
|
||||||
->setType(DATABASE_TYPE_DELETE_INDEX)
|
->setType(DATABASE_TYPE_DELETE_INDEX)
|
||||||
->setDatabase($db)
|
->setDatabase($db)
|
||||||
->setCollection($collection)
|
->setCollection($collection)
|
||||||
->setDocument($index)
|
->setDocument($index)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('indexId', $index->getId())
|
->setParam('indexId', $index->getId())
|
||||||
|
@ -1861,9 +1861,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $events, string $mode) {
|
->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, string $mode) {
|
||||||
|
|
||||||
$data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array
|
$data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array
|
||||||
|
|
||||||
|
@ -1948,7 +1948,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents')
|
||||||
throw new Exception(Exception::DOCUMENT_ALREADY_EXISTS);
|
throw new Exception(Exception::DOCUMENT_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('documentId', $document->getId())
|
->setParam('documentId', $document->getId())
|
||||||
|
@ -2248,9 +2248,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum
|
||||||
->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true)
|
->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Event $events, string $mode) {
|
->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Event $queueForEvents, string $mode) {
|
||||||
|
|
||||||
$data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array
|
$data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array
|
||||||
|
|
||||||
|
@ -2344,7 +2344,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum
|
||||||
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $exception->getMessage());
|
throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('documentId', $document->getId())
|
->setParam('documentId', $document->getId())
|
||||||
|
@ -2379,10 +2379,10 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu
|
||||||
->param('documentId', '', new UID(), 'Document ID.')
|
->param('documentId', '', new UID(), 'Document ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->action(function (string $databaseId, string $collectionId, string $documentId, Response $response, Database $dbForProject, Event $events, Delete $deletes, string $mode) {
|
->action(function (string $databaseId, string $collectionId, string $documentId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes, string $mode) {
|
||||||
|
|
||||||
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
|
||||||
|
|
||||||
|
@ -2430,12 +2430,12 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu
|
||||||
$document->setAttribute('$collectionId', $collectionId);
|
$document->setAttribute('$collectionId', $collectionId);
|
||||||
$document->setAttribute('$databaseId', $databaseId);
|
$document->setAttribute('$databaseId', $databaseId);
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_AUDIT)
|
->setType(DELETE_TYPE_AUDIT)
|
||||||
->setDocument($document)
|
->setDocument($document)
|
||||||
;
|
;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('databaseId', $databaseId)
|
->setParam('databaseId', $databaseId)
|
||||||
->setParam('collectionId', $collection->getId())
|
->setParam('collectionId', $collection->getId())
|
||||||
->setParam('documentId', $document->getId())
|
->setParam('documentId', $document->getId())
|
||||||
|
|
|
@ -70,9 +70,9 @@ App::post('/v1/functions')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (string $functionId, string $name, array $execute, string $runtime, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $eventsInstance, Database $dbForConsole) {
|
->action(function (string $functionId, string $name, array $execute, string $runtime, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Database $dbForConsole) {
|
||||||
|
|
||||||
$functionId = ($functionId == 'unique()') ? ID::unique() : $functionId;
|
$functionId = ($functionId == 'unique()') ? ID::unique() : $functionId;
|
||||||
$function = $dbForProject->createDocument('functions', new Document([
|
$function = $dbForProject->createDocument('functions', new Document([
|
||||||
|
@ -104,7 +104,7 @@ App::post('/v1/functions')
|
||||||
$function->setAttribute('scheduleId', $schedule->getId());
|
$function->setAttribute('scheduleId', $schedule->getId());
|
||||||
$dbForProject->updateDocument('functions', $function->getId(), $function);
|
$dbForProject->updateDocument('functions', $function->getId(), $function);
|
||||||
|
|
||||||
$eventsInstance->setParam('functionId', $function->getId());
|
$queueForEvents->setParam('functionId', $function->getId());
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -446,9 +446,9 @@ App::put('/v1/functions/:functionId')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (string $functionId, string $name, array $execute, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $eventsInstance, Database $dbForConsole) {
|
->action(function (string $functionId, string $name, array $execute, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Database $dbForConsole) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ App::put('/v1/functions/:functionId')
|
||||||
|
|
||||||
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
||||||
|
|
||||||
$eventsInstance->setParam('functionId', $function->getId());
|
$queueForEvents->setParam('functionId', $function->getId());
|
||||||
|
|
||||||
$response->dynamic($function, Response::MODEL_FUNCTION);
|
$response->dynamic($function, Response::MODEL_FUNCTION);
|
||||||
});
|
});
|
||||||
|
@ -509,9 +509,9 @@ App::patch('/v1/functions/:functionId/deployments/:deploymentId')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Document $project, Event $events, Database $dbForConsole) {
|
->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Database $dbForConsole) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
$deployment = $dbForProject->getDocument('deployments', $deploymentId);
|
$deployment = $dbForProject->getDocument('deployments', $deploymentId);
|
||||||
|
@ -549,7 +549,7 @@ App::patch('/v1/functions/:functionId/deployments/:deploymentId')
|
||||||
|
|
||||||
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('deploymentId', $deployment->getId());
|
->setParam('deploymentId', $deployment->getId());
|
||||||
|
|
||||||
|
@ -572,11 +572,11 @@ App::delete('/v1/functions/:functionId')
|
||||||
->param('functionId', '', new UID(), 'Function ID.')
|
->param('functionId', '', new UID(), 'Function ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (string $functionId, Response $response, Database $dbForProject, Delete $deletes, Event $events, Document $project, Database $dbForConsole) {
|
->action(function (string $functionId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents, Document $project, Database $dbForConsole) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
|
|
||||||
|
@ -597,11 +597,11 @@ App::delete('/v1/functions/:functionId')
|
||||||
|
|
||||||
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($function);
|
->setDocument($function);
|
||||||
|
|
||||||
$events->setParam('functionId', $function->getId());
|
$queueForEvents->setParam('functionId', $function->getId());
|
||||||
|
|
||||||
$response->noContent();
|
$response->noContent();
|
||||||
});
|
});
|
||||||
|
@ -629,13 +629,13 @@ App::post('/v1/functions/:functionId/deployments')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('deviceFunctions')
|
->inject('deviceFunctions')
|
||||||
->inject('deviceLocal')
|
->inject('deviceLocal')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->inject('builds')
|
->inject('queueForBuilds')
|
||||||
->action(function (string $functionId, string $entrypoint, mixed $code, bool $activate, Request $request, Response $response, Database $dbForProject, Event $events, Document $project, Device $deviceFunctions, Device $deviceLocal, Database $dbForConsole, Build $builds) {
|
->action(function (string $functionId, string $entrypoint, mixed $code, bool $activate, Request $request, Response $response, Database $dbForProject, Event $queueForEvents, Document $project, Device $deviceFunctions, Device $deviceLocal, Database $dbForConsole, Build $queueForBuilds) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
|
|
||||||
|
@ -755,7 +755,7 @@ App::post('/v1/functions/:functionId/deployments')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the build
|
// Start the build
|
||||||
$builds
|
$queueForBuilds
|
||||||
->setType(BUILD_TYPE_DEPLOYMENT)
|
->setType(BUILD_TYPE_DEPLOYMENT)
|
||||||
->setResource($function)
|
->setResource($function)
|
||||||
->setDeployment($deployment)
|
->setDeployment($deployment)
|
||||||
|
@ -804,7 +804,7 @@ App::post('/v1/functions/:functionId/deployments')
|
||||||
|
|
||||||
$metadata = null;
|
$metadata = null;
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('deploymentId', $deployment->getId());
|
->setParam('deploymentId', $deployment->getId());
|
||||||
|
|
||||||
|
@ -939,10 +939,10 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId')
|
||||||
->param('deploymentId', '', new UID(), 'Deployment ID.')
|
->param('deploymentId', '', new UID(), 'Deployment ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deviceFunctions')
|
->inject('deviceFunctions')
|
||||||
->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Delete $deletes, Event $events, Device $deviceFunctions) {
|
->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents, Device $deviceFunctions) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
if ($function->isEmpty()) {
|
if ($function->isEmpty()) {
|
||||||
|
@ -970,11 +970,11 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId')
|
||||||
])));
|
])));
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('deploymentId', $deployment->getId());
|
->setParam('deploymentId', $deployment->getId());
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($deployment);
|
->setDocument($deployment);
|
||||||
|
|
||||||
|
@ -1000,9 +1000,9 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('builds')
|
->inject('queueForBuilds')
|
||||||
->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $events, Build $builds) {
|
->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Build $queueForBuilds) {
|
||||||
|
|
||||||
$function = $dbForProject->getDocument('functions', $functionId);
|
$function = $dbForProject->getDocument('functions', $functionId);
|
||||||
$deployment = $dbForProject->getDocument('deployments', $deploymentId);
|
$deployment = $dbForProject->getDocument('deployments', $deploymentId);
|
||||||
|
@ -1025,12 +1025,12 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId')
|
||||||
throw new Exception(Exception::BUILD_IN_PROGRESS, 'Build not failed');
|
throw new Exception(Exception::BUILD_IN_PROGRESS, 'Build not failed');
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('deploymentId', $deployment->getId());
|
->setParam('deploymentId', $deployment->getId());
|
||||||
|
|
||||||
// Retry the build
|
// Retry the build
|
||||||
$builds
|
$queueForBuilds
|
||||||
->setType(BUILD_TYPE_RETRY)
|
->setType(BUILD_TYPE_RETRY)
|
||||||
->setResource($function)
|
->setResource($function)
|
||||||
->setDeployment($deployment)
|
->setDeployment($deployment)
|
||||||
|
@ -1062,11 +1062,11 @@ App::post('/v1/functions/:functionId/executions')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('usage')
|
->inject('usage')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('queueForFunctions')
|
->inject('queueForFunctions')
|
||||||
->action(function (string $functionId, string $data, bool $async, Response $response, Document $project, Database $dbForProject, Document $user, Event $events, Stats $usage, string $mode, Func $queueForFunctions) {
|
->action(function (string $functionId, string $data, bool $async, Response $response, Document $project, Database $dbForProject, Document $user, Event $queueForEvents, Stats $usage, string $mode, Func $queueForFunctions) {
|
||||||
|
|
||||||
$function = Authorization::skip(fn () => $dbForProject->getDocument('functions', $functionId));
|
$function = Authorization::skip(fn () => $dbForProject->getDocument('functions', $functionId));
|
||||||
|
|
||||||
|
@ -1148,7 +1148,7 @@ App::post('/v1/functions/:functionId/executions')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('functionId', $function->getId())
|
->setParam('functionId', $function->getId())
|
||||||
->setParam('executionId', $execution->getId())
|
->setParam('executionId', $execution->getId())
|
||||||
->setContext('function', $function);
|
->setContext('function', $function);
|
||||||
|
|
|
@ -349,11 +349,11 @@ App::get('/v1/health/queue/webhooks')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (Event $events, Response $response) {
|
->action(function (Event $queueForEvents, Response $response) {
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $events->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $queueForEvents->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
}, ['response']);
|
}, ['response']);
|
||||||
|
|
||||||
App::get('/v1/health/queue/logs')
|
App::get('/v1/health/queue/logs')
|
||||||
|
@ -367,11 +367,11 @@ App::get('/v1/health/queue/logs')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
||||||
->inject('audits')
|
->inject('queueForAudits')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (Audit $audits, Response $response) {
|
->action(function (Audit $queueForAudits, Response $response) {
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $audits->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $queueForAudits->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
}, ['response']);
|
}, ['response']);
|
||||||
|
|
||||||
App::get('/v1/health/queue/certificates')
|
App::get('/v1/health/queue/certificates')
|
||||||
|
@ -385,11 +385,11 @@ App::get('/v1/health/queue/certificates')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
|
||||||
->inject('certificates')
|
->inject('queueForCertificates')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (Certificate $certificates, Response $response) {
|
->action(function (Certificate $queueForCertificates, Response $response) {
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $certificates->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $queueForCertificates->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
}, ['response']);
|
}, ['response']);
|
||||||
|
|
||||||
App::get('/v1/health/queue/functions')
|
App::get('/v1/health/queue/functions')
|
||||||
|
|
|
@ -483,8 +483,8 @@ App::delete('/v1/projects/:projectId')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $projectId, string $password, Response $response, Document $user, Database $dbForConsole, Delete $deletes) {
|
->action(function (string $projectId, string $password, Response $response, Document $user, Database $dbForConsole, Delete $queueForDeletes) {
|
||||||
|
|
||||||
if (!Auth::passwordVerify($password, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password
|
if (!Auth::passwordVerify($password, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password
|
||||||
throw new Exception(Exception::USER_INVALID_CREDENTIALS);
|
throw new Exception(Exception::USER_INVALID_CREDENTIALS);
|
||||||
|
@ -496,7 +496,7 @@ App::delete('/v1/projects/:projectId')
|
||||||
throw new Exception(Exception::PROJECT_NOT_FOUND);
|
throw new Exception(Exception::PROJECT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($project)
|
->setDocument($project)
|
||||||
;
|
;
|
||||||
|
@ -1314,7 +1314,7 @@ App::patch('/v1/projects/:projectId/domains/:domainId/verification')
|
||||||
->param('domainId', '', new UID(), 'Domain unique ID.')
|
->param('domainId', '', new UID(), 'Domain unique ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->inject('certificates')
|
->inject('queueForCertificates')
|
||||||
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Certificate $queueForCertificates) {
|
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Certificate $queueForCertificates) {
|
||||||
|
|
||||||
$project = $dbForConsole->getDocument('projects', $projectId);
|
$project = $dbForConsole->getDocument('projects', $projectId);
|
||||||
|
@ -1373,8 +1373,8 @@ App::delete('/v1/projects/:projectId/domains/:domainId')
|
||||||
->param('domainId', '', new UID(), 'Domain unique ID.')
|
->param('domainId', '', new UID(), 'Domain unique ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $deletes) {
|
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$project = $dbForConsole->getDocument('projects', $projectId);
|
$project = $dbForConsole->getDocument('projects', $projectId);
|
||||||
|
|
||||||
|
@ -1395,7 +1395,7 @@ App::delete('/v1/projects/:projectId/domains/:domainId')
|
||||||
|
|
||||||
$dbForConsole->deleteCachedDocument('projects', $project->getId());
|
$dbForConsole->deleteCachedDocument('projects', $project->getId());
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_CERTIFICATES)
|
->setType(DELETE_TYPE_CERTIFICATES)
|
||||||
->setDocument($domain);
|
->setDocument($domain);
|
||||||
|
|
||||||
|
|
|
@ -71,8 +71,8 @@ App::post('/v1/storage/buckets')
|
||||||
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$bucketId = $bucketId === 'unique()' ? ID::unique() : $bucketId;
|
$bucketId = $bucketId === 'unique()' ? ID::unique() : $bucketId;
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ App::post('/v1/storage/buckets')
|
||||||
throw new Exception(Exception::STORAGE_BUCKET_ALREADY_EXISTS);
|
throw new Exception(Exception::STORAGE_BUCKET_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -243,8 +243,8 @@ App::put('/v1/storage/buckets/:bucketId')
|
||||||
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, ?int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, ?int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$bucket = $dbForProject->getDocument('buckets', $bucketId);
|
$bucket = $dbForProject->getDocument('buckets', $bucketId);
|
||||||
|
|
||||||
if ($bucket->isEmpty()) {
|
if ($bucket->isEmpty()) {
|
||||||
|
@ -276,7 +276,7 @@ App::put('/v1/storage/buckets/:bucketId')
|
||||||
->setAttribute('compression', $compression)
|
->setAttribute('compression', $compression)
|
||||||
->setAttribute('antivirus', $antivirus));
|
->setAttribute('antivirus', $antivirus));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -300,9 +300,9 @@ App::delete('/v1/storage/buckets/:bucketId')
|
||||||
->param('bucketId', '', new UID(), 'Bucket unique ID.')
|
->param('bucketId', '', new UID(), 'Bucket unique ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $deletes, Event $events) {
|
->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents) {
|
||||||
$bucket = $dbForProject->getDocument('buckets', $bucketId);
|
$bucket = $dbForProject->getDocument('buckets', $bucketId);
|
||||||
|
|
||||||
if ($bucket->isEmpty()) {
|
if ($bucket->isEmpty()) {
|
||||||
|
@ -313,11 +313,11 @@ App::delete('/v1/storage/buckets/:bucketId')
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove bucket from DB');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove bucket from DB');
|
||||||
}
|
}
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($bucket);
|
->setDocument($bucket);
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
->setPayload($response->output($bucket, Response::MODEL_BUCKET))
|
->setPayload($response->output($bucket, Response::MODEL_BUCKET))
|
||||||
;
|
;
|
||||||
|
@ -355,12 +355,12 @@ App::post('/v1/storage/buckets/:bucketId/files')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('deviceFiles')
|
->inject('deviceFiles')
|
||||||
->inject('deviceLocal')
|
->inject('deviceLocal')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $bucketId, string $fileId, mixed $file, ?array $permissions, Request $request, Response $response, Database $dbForProject, Document $user, Event $events, string $mode, Device $deviceFiles, Device $deviceLocal, Delete $deletes) {
|
->action(function (string $bucketId, string $fileId, mixed $file, ?array $permissions, Request $request, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, string $mode, Device $deviceFiles, Device $deviceLocal, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
||||||
|
|
||||||
|
@ -636,13 +636,13 @@ App::post('/v1/storage/buckets/:bucketId/files')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
->setParam('fileId', $file->getId())
|
->setParam('fileId', $file->getId())
|
||||||
->setContext('bucket', $bucket)
|
->setContext('bucket', $bucket)
|
||||||
;
|
;
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
|
->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
|
||||||
->setResource('file/' . $file->getId())
|
->setResource('file/' . $file->getId())
|
||||||
;
|
;
|
||||||
|
@ -1262,8 +1262,8 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $bucketId, string $fileId, ?array $permissions, Response $response, Database $dbForProject, Document $user, string $mode, Event $events) {
|
->action(function (string $bucketId, string $fileId, ?array $permissions, Response $response, Database $dbForProject, Document $user, string $mode, Event $queueForEvents) {
|
||||||
|
|
||||||
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
||||||
|
|
||||||
|
@ -1329,7 +1329,7 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId')
|
||||||
$file = Authorization::skip(fn() => $dbForProject->updateDocument('bucket_' . $bucket->getInternalId(), $fileId, $file));
|
$file = Authorization::skip(fn() => $dbForProject->updateDocument('bucket_' . $bucket->getInternalId(), $fileId, $file));
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
->setParam('fileId', $file->getId())
|
->setParam('fileId', $file->getId())
|
||||||
->setContext('bucket', $bucket)
|
->setContext('bucket', $bucket)
|
||||||
|
@ -1361,11 +1361,11 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId')
|
||||||
->param('fileId', '', new UID(), 'File ID.')
|
->param('fileId', '', new UID(), 'File ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('deviceFiles')
|
->inject('deviceFiles')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $events, string $mode, Device $deviceFiles, Delete $deletes) {
|
->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $queueForEvents, string $mode, Device $deviceFiles, Delete $queueForDeletes) {
|
||||||
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
$bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
|
||||||
|
|
||||||
if ($bucket->isEmpty() || (!$bucket->getAttribute('enabled') && $mode !== APP_MODE_ADMIN)) {
|
if ($bucket->isEmpty() || (!$bucket->getAttribute('enabled') && $mode !== APP_MODE_ADMIN)) {
|
||||||
|
@ -1402,7 +1402,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId')
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($deviceDeleted) {
|
if ($deviceDeleted) {
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
|
->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
|
||||||
->setResource('file/' . $fileId)
|
->setResource('file/' . $fileId)
|
||||||
;
|
;
|
||||||
|
@ -1424,7 +1424,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId')
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to delete file from device');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to delete file from device');
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('bucketId', $bucket->getId())
|
->setParam('bucketId', $bucket->getId())
|
||||||
->setParam('fileId', $file->getId())
|
->setParam('fileId', $file->getId())
|
||||||
->setContext('bucket', $bucket)
|
->setContext('bucket', $bucket)
|
||||||
|
|
|
@ -57,8 +57,8 @@ App::post('/v1/teams')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
|
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
|
||||||
$isAppUser = Auth::isAppUser(Authorization::getRoles());
|
$isAppUser = Auth::isAppUser(Authorization::getRoles());
|
||||||
|
@ -108,10 +108,10 @@ App::post('/v1/teams')
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('teamId', $team->getId());
|
$queueForEvents->setParam('teamId', $team->getId());
|
||||||
|
|
||||||
if (!empty($user->getId())) {
|
if (!empty($user->getId())) {
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
$response
|
$response
|
||||||
|
@ -211,8 +211,8 @@ App::put('/v1/teams/:teamId')
|
||||||
->param('name', null, new Text(128), 'New team name. Max length: 128 chars.')
|
->param('name', null, new Text(128), 'New team name. Max length: 128 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$team = $dbForProject->getDocument('teams', $teamId);
|
$team = $dbForProject->getDocument('teams', $teamId);
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ App::put('/v1/teams/:teamId')
|
||||||
->setAttribute('name', $name)
|
->setAttribute('name', $name)
|
||||||
->setAttribute('search', implode(' ', [$teamId, $name])));
|
->setAttribute('search', implode(' ', [$teamId, $name])));
|
||||||
|
|
||||||
$events->setParam('teamId', $team->getId());
|
$queueForEvents->setParam('teamId', $team->getId());
|
||||||
|
|
||||||
$response->dynamic($team, Response::MODEL_TEAM);
|
$response->dynamic($team, Response::MODEL_TEAM);
|
||||||
});
|
});
|
||||||
|
@ -245,9 +245,9 @@ App::delete('/v1/teams/:teamId')
|
||||||
->param('teamId', '', new UID(), 'Team ID.')
|
->param('teamId', '', new UID(), 'Team ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $teamId, Response $response, Database $dbForProject, Event $events, Delete $deletes) {
|
->action(function (string $teamId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$team = $dbForProject->getDocument('teams', $teamId);
|
$team = $dbForProject->getDocument('teams', $teamId);
|
||||||
|
|
||||||
|
@ -271,11 +271,11 @@ App::delete('/v1/teams/:teamId')
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove team from DB');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove team from DB');
|
||||||
}
|
}
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($team);
|
->setDocument($team);
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('teamId', $team->getId())
|
->setParam('teamId', $team->getId())
|
||||||
->setPayload($response->output($team, Response::MODEL_TEAM))
|
->setPayload($response->output($team, Response::MODEL_TEAM))
|
||||||
;
|
;
|
||||||
|
@ -310,9 +310,9 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('mails')
|
->inject('queueForMail')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $mails, Event $events) {
|
->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMail, Event $queueForEvents) {
|
||||||
|
|
||||||
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
|
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
|
||||||
$isAppUser = Auth::isAppUser(Authorization::getRoles());
|
$isAppUser = Auth::isAppUser(Authorization::getRoles());
|
||||||
|
@ -431,7 +431,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
$url = Template::unParseURL($url);
|
$url = Template::unParseURL($url);
|
||||||
|
|
||||||
if (!$isPrivilegedUser && !$isAppUser) { // No need of confirmation when in admin or app mode
|
if (!$isPrivilegedUser && !$isAppUser) { // No need of confirmation when in admin or app mode
|
||||||
$mails
|
$queueForMail
|
||||||
->setType(MAIL_TYPE_INVITATION)
|
->setType(MAIL_TYPE_INVITATION)
|
||||||
->setRecipient($email)
|
->setRecipient($email)
|
||||||
->setUrl($url)
|
->setUrl($url)
|
||||||
|
@ -443,7 +443,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('teamId', $team->getId())
|
->setParam('teamId', $team->getId())
|
||||||
->setParam('membershipId', $membership->getId())
|
->setParam('membershipId', $membership->getId())
|
||||||
;
|
;
|
||||||
|
@ -601,8 +601,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $events) {
|
->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$team = $dbForProject->getDocument('teams', $teamId);
|
$team = $dbForProject->getDocument('teams', $teamId);
|
||||||
if ($team->isEmpty()) {
|
if ($team->isEmpty()) {
|
||||||
|
@ -638,7 +638,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId')
|
||||||
*/
|
*/
|
||||||
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
$dbForProject->deleteCachedDocument('users', $profile->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('teamId', $team->getId())
|
->setParam('teamId', $team->getId())
|
||||||
->setParam('membershipId', $membership->getId());
|
->setParam('membershipId', $membership->getId());
|
||||||
|
|
||||||
|
@ -676,8 +676,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Reader $geodb, Event $events) {
|
->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Reader $geodb, Event $queueForEvents) {
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
|
|
||||||
$membership = $dbForProject->getDocument('memberships', $membershipId);
|
$membership = $dbForProject->getDocument('memberships', $membershipId);
|
||||||
|
@ -761,7 +761,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status')
|
||||||
|
|
||||||
$team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('total', $team->getAttribute('total', 0) + 1)));
|
$team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('total', $team->getAttribute('total', 0) + 1)));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('teamId', $team->getId())
|
->setParam('teamId', $team->getId())
|
||||||
->setParam('membershipId', $membership->getId())
|
->setParam('membershipId', $membership->getId())
|
||||||
;
|
;
|
||||||
|
@ -803,8 +803,8 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId')
|
||||||
->param('membershipId', '', new UID(), 'Membership ID.')
|
->param('membershipId', '', new UID(), 'Membership ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$membership = $dbForProject->getDocument('memberships', $membershipId);
|
$membership = $dbForProject->getDocument('memberships', $membershipId);
|
||||||
|
|
||||||
|
@ -843,7 +843,7 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId')
|
||||||
Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team));
|
Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team));
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('teamId', $team->getId())
|
->setParam('teamId', $team->getId())
|
||||||
->setParam('membershipId', $membership->getId())
|
->setParam('membershipId', $membership->getId())
|
||||||
->setPayload($response->output($membership, Response::MODEL_MEMBERSHIP))
|
->setPayload($response->output($membership, Response::MODEL_MEMBERSHIP))
|
||||||
|
|
|
@ -36,7 +36,7 @@ use MaxMind\Db\Reader;
|
||||||
use Utopia\Validator\Integer;
|
use Utopia\Validator\Integer;
|
||||||
|
|
||||||
/** TODO: Remove function when we move to using utopia/platform */
|
/** TODO: Remove function when we move to using utopia/platform */
|
||||||
function createUser(string $hash, mixed $hashOptions, string $userId, ?string $email, ?string $password, ?string $phone, string $name, Database $dbForProject, Event $events): Document
|
function createUser(string $hash, mixed $hashOptions, string $userId, ?string $email, ?string $password, ?string $phone, string $name, Database $dbForProject, Event $queueForEvents): Document
|
||||||
{
|
{
|
||||||
$hashOptionsObject = (\is_string($hashOptions)) ? \json_decode($hashOptions, true) : $hashOptions; // Cast to JSON array
|
$hashOptionsObject = (\is_string($hashOptions)) ? \json_decode($hashOptions, true) : $hashOptions; // Cast to JSON array
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e
|
||||||
throw new Exception(Exception::USER_ALREADY_EXISTS);
|
throw new Exception(Exception::USER_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
@ -105,9 +105,9 @@ App::post('/v1/users')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, ?string $email, ?string $phone, ?string $password, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, ?string $email, ?string $phone, ?string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('plaintext', '{}', $userId, $email, $password, $phone, $name, $dbForProject, $events);
|
$user = createUser('plaintext', '{}', $userId, $email, $password, $phone, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -135,9 +135,9 @@ App::post('/v1/users/bcrypt')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('bcrypt', '{}', $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('bcrypt', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -165,9 +165,9 @@ App::post('/v1/users/md5')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('md5', '{}', $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('md5', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -195,9 +195,9 @@ App::post('/v1/users/argon2')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('argon2', '{}', $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('argon2', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -226,15 +226,15 @@ App::post('/v1/users/sha')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$options = '{}';
|
$options = '{}';
|
||||||
|
|
||||||
if (!empty($passwordVersion)) {
|
if (!empty($passwordVersion)) {
|
||||||
$options = '{"version":"' . $passwordVersion . '"}';
|
$options = '{"version":"' . $passwordVersion . '"}';
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = createUser('sha', $options, $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('sha', $options, $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -262,9 +262,9 @@ App::post('/v1/users/phpass')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('phpass', '{}', $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('phpass', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -297,8 +297,8 @@ App::post('/v1/users/scrypt')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $passwordSalt, int $passwordCpu, int $passwordMemory, int $passwordParallel, int $passwordLength, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $passwordSalt, int $passwordCpu, int $passwordMemory, int $passwordParallel, int $passwordLength, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$options = [
|
$options = [
|
||||||
'salt' => $passwordSalt,
|
'salt' => $passwordSalt,
|
||||||
'costCpu' => $passwordCpu,
|
'costCpu' => $passwordCpu,
|
||||||
|
@ -307,7 +307,7 @@ App::post('/v1/users/scrypt')
|
||||||
'length' => $passwordLength
|
'length' => $passwordLength
|
||||||
];
|
];
|
||||||
|
|
||||||
$user = createUser('scrypt', \json_encode($options), $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('scrypt', \json_encode($options), $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -338,9 +338,9 @@ App::post('/v1/users/scrypt-modified')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, string $password, string $passwordSalt, string $passwordSaltSeparator, string $passwordSignerKey, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, string $password, string $passwordSalt, string $passwordSaltSeparator, string $passwordSignerKey, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
$user = createUser('scryptMod', '{"signerKey":"' . $passwordSignerKey . '","saltSeparator":"' . $passwordSaltSeparator . '","salt":"' . $passwordSalt . '"}', $userId, $email, $password, null, $name, $dbForProject, $events);
|
$user = createUser('scryptMod', '{"signerKey":"' . $passwordSignerKey . '","saltSeparator":"' . $passwordSaltSeparator . '","salt":"' . $passwordSalt . '"}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
|
@ -632,8 +632,8 @@ App::patch('/v1/users/:userId/status')
|
||||||
->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.')
|
->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -643,7 +643,7 @@ App::patch('/v1/users/:userId/status')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId());
|
->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
@ -668,8 +668,8 @@ App::patch('/v1/users/:userId/verification')
|
||||||
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@ App::patch('/v1/users/:userId/verification')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId());
|
->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
@ -704,8 +704,8 @@ App::patch('/v1/users/:userId/verification/phone')
|
||||||
->param('phoneVerification', false, new Boolean(), 'User phone verification status.')
|
->param('phoneVerification', false, new Boolean(), 'User phone verification status.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -715,7 +715,7 @@ App::patch('/v1/users/:userId/verification/phone')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId());
|
->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
@ -741,8 +741,8 @@ App::patch('/v1/users/:userId/name')
|
||||||
->param('name', '', new Text(128), 'User name. Max length: 128 chars.')
|
->param('name', '', new Text(128), 'User name. Max length: 128 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -757,7 +757,7 @@ App::patch('/v1/users/:userId/name')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
});
|
});
|
||||||
|
@ -782,8 +782,8 @@ App::patch('/v1/users/:userId/password')
|
||||||
->param('password', '', new Password(), 'New user password. Must be at least 8 chars.')
|
->param('password', '', new Password(), 'New user password. Must be at least 8 chars.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -799,7 +799,7 @@ App::patch('/v1/users/:userId/password')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
});
|
});
|
||||||
|
@ -824,8 +824,8 @@ App::patch('/v1/users/:userId/email')
|
||||||
->param('email', '', new Email(), 'User email.')
|
->param('email', '', new Email(), 'User email.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -846,7 +846,7 @@ App::patch('/v1/users/:userId/email')
|
||||||
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
});
|
});
|
||||||
|
@ -870,8 +870,8 @@ App::patch('/v1/users/:userId/phone')
|
||||||
->param('number', '', new Phone(), 'User phone number.')
|
->param('number', '', new Phone(), 'User phone number.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -891,7 +891,7 @@ App::patch('/v1/users/:userId/phone')
|
||||||
throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
|
throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
});
|
});
|
||||||
|
@ -916,8 +916,8 @@ App::patch('/v1/users/:userId/verification')
|
||||||
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -927,7 +927,7 @@ App::patch('/v1/users/:userId/verification')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
||||||
|
|
||||||
$events->setParam('userId', $user->getId());
|
$queueForEvents->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
});
|
});
|
||||||
|
@ -949,8 +949,8 @@ App::patch('/v1/users/:userId/prefs')
|
||||||
->param('prefs', '', new Assoc(), 'Prefs key-value JSON object.')
|
->param('prefs', '', new Assoc(), 'Prefs key-value JSON object.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -960,7 +960,7 @@ App::patch('/v1/users/:userId/prefs')
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs));
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs));
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId());
|
->setParam('userId', $user->getId());
|
||||||
|
|
||||||
$response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES);
|
$response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES);
|
||||||
|
@ -984,8 +984,8 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
|
||||||
->param('sessionId', '', new UID(), 'Session ID.')
|
->param('sessionId', '', new UID(), 'Session ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -1002,7 +1002,7 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
|
||||||
$dbForProject->deleteDocument('sessions', $session->getId());
|
$dbForProject->deleteDocument('sessions', $session->getId());
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setParam('sessionId', $sessionId);
|
->setParam('sessionId', $sessionId);
|
||||||
|
|
||||||
|
@ -1026,8 +1026,8 @@ App::delete('/v1/users/:userId/sessions')
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->action(function (string $userId, Response $response, Database $dbForProject, Event $events) {
|
->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -1045,7 +1045,7 @@ App::delete('/v1/users/:userId/sessions')
|
||||||
|
|
||||||
$dbForProject->deleteCachedDocument('users', $user->getId());
|
$dbForProject->deleteCachedDocument('users', $user->getId());
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setPayload($response->output($user, Response::MODEL_USER));
|
->setPayload($response->output($user, Response::MODEL_USER));
|
||||||
|
|
||||||
|
@ -1069,9 +1069,9 @@ App::delete('/v1/users/:userId')
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->action(function (string $userId, Response $response, Database $dbForProject, Event $events, Delete $deletes) {
|
->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
@ -1084,11 +1084,11 @@ App::delete('/v1/users/:userId')
|
||||||
|
|
||||||
$dbForProject->deleteDocument('users', $userId);
|
$dbForProject->deleteDocument('users', $userId);
|
||||||
|
|
||||||
$deletes
|
$queueForDeletes
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
->setDocument($clone);
|
->setDocument($clone);
|
||||||
|
|
||||||
$events
|
$queueForEvents
|
||||||
->setParam('userId', $user->getId())
|
->setParam('userId', $user->getId())
|
||||||
->setPayload($response->output($clone, Response::MODEL_USER));
|
->setPayload($response->output($clone, Response::MODEL_USER));
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ App::init()
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('clients')
|
->inject('clients')
|
||||||
->inject('servers')
|
->inject('servers')
|
||||||
->inject('certificates')
|
->inject('queueForCertificates')
|
||||||
->action(function (App $utopia, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $clients, array $servers, Certificate $queueForCertificates) {
|
->action(function (App $utopia, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $clients, array $servers, Certificate $queueForCertificates) {
|
||||||
/*
|
/*
|
||||||
* Request format
|
* Request format
|
||||||
|
|
|
@ -97,15 +97,15 @@ App::init()
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('audits')
|
->inject('queueForAudits')
|
||||||
->inject('mails')
|
->inject('queueForMail')
|
||||||
->inject('usage')
|
->inject('usage')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $events, Audit $audits, Mail $mails, Stats $usage, Delete $deletes, EventDatabase $database, Database $dbForProject, string $mode) use ($databaseListener) {
|
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Mail $queueForMail, Stats $usage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Database $dbForProject, string $mode) use ($databaseListener) {
|
||||||
|
|
||||||
$route = $utopia->match($request);
|
$route = $utopia->match($request);
|
||||||
|
|
||||||
|
@ -174,16 +174,16 @@ App::init()
|
||||||
/*
|
/*
|
||||||
* Background Jobs
|
* Background Jobs
|
||||||
*/
|
*/
|
||||||
$events
|
$queueForEvents
|
||||||
->setEvent($route->getLabel('event', ''))
|
->setEvent($route->getLabel('event', ''))
|
||||||
->setProject($project)
|
->setProject($project)
|
||||||
->setUser($user);
|
->setUser($user);
|
||||||
|
|
||||||
$mails
|
$queueForMail
|
||||||
->setProject($project)
|
->setProject($project)
|
||||||
->setUser($user);
|
->setUser($user);
|
||||||
|
|
||||||
$audits
|
$queueForAudits
|
||||||
->setMode($mode)
|
->setMode($mode)
|
||||||
->setUserAgent($request->getUserAgent(''))
|
->setUserAgent($request->getUserAgent(''))
|
||||||
->setIP($request->getIP())
|
->setIP($request->getIP())
|
||||||
|
@ -199,8 +199,8 @@ App::init()
|
||||||
->setParam('project.{scope}.network.inbound', 0)
|
->setParam('project.{scope}.network.inbound', 0)
|
||||||
->setParam('project.{scope}.network.outbound', 0);
|
->setParam('project.{scope}.network.outbound', 0);
|
||||||
|
|
||||||
$deletes->setProject($project);
|
$queueForDeletes->setProject($project);
|
||||||
$database->setProject($project);
|
$queueForDatabase->setProject($project);
|
||||||
|
|
||||||
$dbForProject->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, Document $document) => $databaseListener($event, $document, $usage));
|
$dbForProject->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, Document $document) => $databaseListener($event, $document, $usage));
|
||||||
|
|
||||||
|
@ -325,33 +325,33 @@ App::shutdown()
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('events')
|
->inject('queueForEvents')
|
||||||
->inject('audits')
|
->inject('queueForAudits')
|
||||||
->inject('usage')
|
->inject('usage')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->inject('database')
|
->inject('queueForDatabase')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('queueForFunctions')
|
->inject('queueForFunctions')
|
||||||
->action(function (App $utopia, Request $request, Response $response, Document $project, Event $events, Audit $audits, Stats $usage, Delete $deletes, EventDatabase $database, string $mode, Database $dbForProject, Func $queueForFunctions) use ($parseLabel) {
|
->action(function (App $utopia, Request $request, Response $response, Document $project, Event $queueForEvents, Audit $queueForAudits, Stats $usage, Delete $queueForDeletes, EventDatabase $queueForDatabase, string $mode, Database $dbForProject, Func $queueForFunctions) use ($parseLabel) {
|
||||||
|
|
||||||
$responsePayload = $response->getPayload();
|
$responsePayload = $response->getPayload();
|
||||||
|
|
||||||
if (!empty($events->getEvent())) {
|
if (!empty($queueForEvents->getEvent())) {
|
||||||
if (empty($events->getPayload())) {
|
if (empty($queueForEvents->getPayload())) {
|
||||||
$events->setPayload($responsePayload);
|
$queueForEvents->setPayload($responsePayload);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Trigger functions.
|
* Trigger functions.
|
||||||
*/
|
*/
|
||||||
$queueForFunctions
|
$queueForFunctions
|
||||||
->from($events)
|
->from($queueForEvents)
|
||||||
->trigger();
|
->trigger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger webhooks.
|
* Trigger webhooks.
|
||||||
*/
|
*/
|
||||||
$events
|
$queueForEvents
|
||||||
->setClass(Event::WEBHOOK_CLASS_NAME)
|
->setClass(Event::WEBHOOK_CLASS_NAME)
|
||||||
->setQueue(Event::WEBHOOK_QUEUE_NAME)
|
->setQueue(Event::WEBHOOK_QUEUE_NAME)
|
||||||
->trigger();
|
->trigger();
|
||||||
|
@ -360,12 +360,12 @@ App::shutdown()
|
||||||
* Trigger realtime.
|
* Trigger realtime.
|
||||||
*/
|
*/
|
||||||
if ($project->getId() !== 'console') {
|
if ($project->getId() !== 'console') {
|
||||||
$allEvents = Event::generateEvents($events->getEvent(), $events->getParams());
|
$allEvents = Event::generateEvents($queueForEvents->getEvent(), $queueForEvents->getParams());
|
||||||
$payload = new Document($events->getPayload());
|
$payload = new Document($queueForEvents->getPayload());
|
||||||
|
|
||||||
$db = $events->getContext('database');
|
$db = $queueForEvents->getContext('database');
|
||||||
$collection = $events->getContext('collection');
|
$collection = $queueForEvents->getContext('collection');
|
||||||
$bucket = $events->getContext('bucket');
|
$bucket = $queueForEvents->getContext('bucket');
|
||||||
|
|
||||||
$target = Realtime::fromPayload(
|
$target = Realtime::fromPayload(
|
||||||
// Pass first, most verbose event pattern
|
// Pass first, most verbose event pattern
|
||||||
|
@ -379,13 +379,13 @@ App::shutdown()
|
||||||
|
|
||||||
Realtime::send(
|
Realtime::send(
|
||||||
projectId: $target['projectId'] ?? $project->getId(),
|
projectId: $target['projectId'] ?? $project->getId(),
|
||||||
payload: $events->getPayload(),
|
payload: $queueForEvents->getPayload(),
|
||||||
events: $allEvents,
|
events: $allEvents,
|
||||||
channels: $target['channels'],
|
channels: $target['channels'],
|
||||||
roles: $target['roles'],
|
roles: $target['roles'],
|
||||||
options: [
|
options: [
|
||||||
'permissionsChanged' => $target['permissionsChanged'],
|
'permissionsChanged' => $target['permissionsChanged'],
|
||||||
'userId' => $events->getParam('userId')
|
'userId' => $queueForEvents->getParam('userId')
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -393,7 +393,7 @@ App::shutdown()
|
||||||
|
|
||||||
$route = $utopia->match($request);
|
$route = $utopia->match($request);
|
||||||
$requestParams = $route->getParamsValues();
|
$requestParams = $route->getParamsValues();
|
||||||
$user = $audits->getUser();
|
$user = $queueForAudits->getUser();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Audit labels
|
* Audit labels
|
||||||
|
@ -402,7 +402,7 @@ App::shutdown()
|
||||||
if (!empty($pattern)) {
|
if (!empty($pattern)) {
|
||||||
$resource = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
$resource = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
||||||
if (!empty($resource) && $resource !== $pattern) {
|
if (!empty($resource) && $resource !== $pattern) {
|
||||||
$audits->setResource($resource);
|
$queueForAudits->setResource($resource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,31 +410,31 @@ App::shutdown()
|
||||||
if (!empty($pattern)) {
|
if (!empty($pattern)) {
|
||||||
$userId = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
$userId = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
$audits->setUser($user);
|
$queueForAudits->setUser($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($audits->getResource()) && !empty($audits->getUser()->getId())) {
|
if (!empty($queueForAudits->getResource()) && !empty($queueForAudits->getUser()->getId())) {
|
||||||
/**
|
/**
|
||||||
* audits.payload is switched to default true
|
* audits.payload is switched to default true
|
||||||
* in order to auto audit payload for all endpoints
|
* in order to auto audit payload for all endpoints
|
||||||
*/
|
*/
|
||||||
$pattern = $route->getLabel('audits.payload', true);
|
$pattern = $route->getLabel('audits.payload', true);
|
||||||
if (!empty($pattern)) {
|
if (!empty($pattern)) {
|
||||||
$audits->setPayload($responsePayload);
|
$queueForAudits->setPayload($responsePayload);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($events->getParams() as $key => $value) {
|
foreach ($queueForEvents->getParams() as $key => $value) {
|
||||||
$audits->setParam($key, $value);
|
$queueForAudits->setParam($key, $value);
|
||||||
}
|
}
|
||||||
$audits->trigger();
|
$queueForAudits->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($deletes->getType())) {
|
if (!empty($queueForDeletes->getType())) {
|
||||||
$deletes->trigger();
|
$queueForDeletes->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($database->getType())) {
|
if (!empty($queueForDatabase->getType())) {
|
||||||
$database->trigger();
|
$queueForDatabase->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
19
app/init.php
19
app/init.php
|
@ -853,34 +853,31 @@ App::setResource('locale', fn() => new Locale(App::getEnv('_APP_LOCALE', 'en')))
|
||||||
App::setResource('queue', function (Group $pools) {
|
App::setResource('queue', function (Group $pools) {
|
||||||
return $pools->get('queue')->pop()->getResource();
|
return $pools->get('queue')->pop()->getResource();
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
App::setResource('messaging', function (Connection $queue) {
|
App::setResource('queueForMessaging', function (Connection $queue) {
|
||||||
return new Phone($queue);
|
return new Phone($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('mails', function (Connection $queue) {
|
App::setResource('queueForMail', function (Connection $queue) {
|
||||||
return new Mail($queue);
|
return new Mail($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('builds', function (Connection $queue) {
|
App::setResource('queueForBuilds', function (Connection $queue) {
|
||||||
return new Build($queue);
|
return new Build($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('database', function (Connection $queue) {
|
App::setResource('queueForDatabase', function (Connection $queue) {
|
||||||
return new EventDatabase($queue);
|
return new EventDatabase($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('deletes', function (Connection $queue) {
|
App::setResource('queueForDeletes', function (Connection $queue) {
|
||||||
return new Delete($queue);
|
return new Delete($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('events', function (Connection $queue) {
|
App::setResource('queueForEvents', function (Connection $queue) {
|
||||||
return new Event('', '', $queue);
|
return new Event('', '', $queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('audits', function (Connection $queue) {
|
App::setResource('queueForAudits', function (Connection $queue) {
|
||||||
return new Audit($queue);
|
return new Audit($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('events', function (Connection $queue) {
|
|
||||||
return new Event('', '', $queue);
|
|
||||||
}, ['queue']);
|
|
||||||
App::setResource('queueForFunctions', function (Connection $queue) {
|
App::setResource('queueForFunctions', function (Connection $queue) {
|
||||||
return new Func($queue);
|
return new Func($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('certificates', function (Connection $queue) {
|
App::setResource('queueForCertificates', function (Connection $queue) {
|
||||||
return new Certificate($queue);
|
return new Certificate($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
App::setResource('usage', function ($register) {
|
App::setResource('usage', function ($register) {
|
||||||
|
|
|
@ -90,7 +90,7 @@ Server::setResource('cache', function (Registry $register) {
|
||||||
return new Cache(new Sharding($adapters));
|
return new Cache(new Sharding($adapters));
|
||||||
}, ['register']);
|
}, ['register']);
|
||||||
|
|
||||||
Server::setResource('database', function (Registry $register) {
|
Server::setResource('queueForDatabase', function (Registry $register) {
|
||||||
$pools = $register->get('pools');
|
$pools = $register->get('pools');
|
||||||
return new EventDatabase(
|
return new EventDatabase(
|
||||||
$pools
|
$pools
|
||||||
|
@ -103,67 +103,33 @@ Server::setResource('database', function (Registry $register) {
|
||||||
Server::setResource('queue', function (Group $pools) {
|
Server::setResource('queue', function (Group $pools) {
|
||||||
return $pools->get('queue')->pop()->getResource();
|
return $pools->get('queue')->pop()->getResource();
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
Server::setResource('messaging', function (Connection $queue) {
|
Server::setResource('queueForMessaging', function (Connection $queue) {
|
||||||
return new Phone($queue);
|
return new Phone($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('mails', function (Connection $queue) {
|
Server::setResource('queueForMail', function (Connection $queue) {
|
||||||
return new Mail($queue);
|
return new Mail($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('builds', function (Connection $queue) {
|
Server::setResource('queueForBuilds', function (Connection $queue) {
|
||||||
return new Build($queue);
|
return new Build($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('database', function (Connection $queue) {
|
Server::setResource('queueForDatabase', function (Connection $queue) {
|
||||||
return new EventDatabase($queue);
|
return new EventDatabase($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('deletes', function (Connection $queue) {
|
Server::setResource('queueForDeletes', function (Connection $queue) {
|
||||||
return new Delete($queue);
|
return new Delete($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('events', function (Connection $queue) {
|
Server::setResource('queueForEvents', function (Connection $queue) {
|
||||||
return new Event('', '', $queue);
|
return new Event('', '', $queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('audits', function (Connection $queue) {
|
Server::setResource('queueForAudits', function (Connection $queue) {
|
||||||
return new Audit($queue);
|
return new Audit($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('events', function (Connection $queue) {
|
|
||||||
return new Event('', '', $queue);
|
|
||||||
}, ['queue']);
|
|
||||||
Server::setResource('queueForFunctions', function (Connection $queue) {
|
Server::setResource('queueForFunctions', function (Connection $queue) {
|
||||||
return new Func($queue);
|
return new Func($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('certificates', function (Connection $queue) {
|
Server::setResource('queueForCertificates', function (Connection $queue) {
|
||||||
return new Certificate($queue);
|
return new Certificate($queue);
|
||||||
}, ['queue']);
|
}, ['queue']);
|
||||||
Server::setResource('events', function (Registry $register) {
|
|
||||||
$pools = $register->get('pools');
|
|
||||||
return new Event(
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
$pools
|
|
||||||
->get('queue')
|
|
||||||
->pop()
|
|
||||||
->getResource()
|
|
||||||
);
|
|
||||||
}, ['register']);
|
|
||||||
|
|
||||||
Server::setResource('audits', function (Registry $register) {
|
|
||||||
$pools = $register->get('pools');
|
|
||||||
return new Audit(
|
|
||||||
$pools
|
|
||||||
->get('queue')
|
|
||||||
->pop()
|
|
||||||
->getResource()
|
|
||||||
);
|
|
||||||
}, ['register']);
|
|
||||||
|
|
||||||
Server::setResource('certificates', function (Registry $register) {
|
|
||||||
$pools = $register->get('pools');
|
|
||||||
return new Certificate(
|
|
||||||
$pools
|
|
||||||
->get('queue')
|
|
||||||
->pop()
|
|
||||||
->getResource()
|
|
||||||
);
|
|
||||||
}, ['register']);
|
|
||||||
|
|
||||||
Server::setResource('logger', function ($register) {
|
Server::setResource('logger', function ($register) {
|
||||||
return $register->get('logger');
|
return $register->get('logger');
|
||||||
|
|
|
@ -162,12 +162,12 @@ class Func extends Event
|
||||||
/**
|
/**
|
||||||
* Generate a function event from a base event
|
* Generate a function event from a base event
|
||||||
*
|
*
|
||||||
* @param Event $event
|
* @param Event $queueForEvents
|
||||||
*
|
*
|
||||||
* @return self
|
* @return self
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function from(Event $event): self
|
public function from(Event $queueForEvents): self
|
||||||
{
|
{
|
||||||
$this->project = $event->getProject();
|
$this->project = $event->getProject();
|
||||||
$this->user = $event->getUser();
|
$this->user = $event->getUser();
|
||||||
|
|
|
@ -28,59 +28,59 @@ class Maintenance extends Action
|
||||||
$this
|
$this
|
||||||
->desc('Schedules maintenance tasks and publishes them to queues')
|
->desc('Schedules maintenance tasks and publishes them to queues')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->inject('certificates')
|
->inject('queueForCertificates')
|
||||||
->inject('deletes')
|
->inject('queueForDeletes')
|
||||||
->callback(fn (Database $dbForConsole, Certificate $certificates, Delete $deletes) => $this->action($dbForConsole, $certificates, $deletes));
|
->callback(fn (Database $dbForConsole, Certificate $queueForCertificates, Delete $queueForDeletes) => $this->action($dbForConsole, $queueForCertificates, $queueForDeletes));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function action(Database $dbForConsole, Certificate $certificates, Delete $deletes): void
|
public function action(Database $dbForConsole, Certificate $queueForCertificates, Delete $queueForDeletes): void
|
||||||
{
|
{
|
||||||
Console::title('Maintenance V1');
|
Console::title('Maintenance V1');
|
||||||
Console::success(APP_NAME . ' maintenance process v1 has started');
|
Console::success(APP_NAME . ' maintenance process v1 has started');
|
||||||
|
|
||||||
function notifyDeleteExecutionLogs(int $interval, Delete $deletes)
|
function notifyDeleteExecutionLogs(int $interval, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_EXECUTIONS)
|
->setType(DELETE_TYPE_EXECUTIONS)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteAbuseLogs(int $interval, Delete $deletes)
|
function notifyDeleteAbuseLogs(int $interval, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_ABUSE)
|
->setType(DELETE_TYPE_ABUSE)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteAuditLogs(int $interval, Delete $deletes)
|
function notifyDeleteAuditLogs(int $interval, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_AUDIT)
|
->setType(DELETE_TYPE_AUDIT)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $deletes)
|
function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_USAGE)
|
->setType(DELETE_TYPE_USAGE)
|
||||||
->setUsageRetentionHourlyDateTime(DateTime::addSeconds(new \DateTime(), -1 * $usageStatsRetentionHourly))
|
->setUsageRetentionHourlyDateTime(DateTime::addSeconds(new \DateTime(), -1 * $usageStatsRetentionHourly))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteConnections(Delete $deletes)
|
function notifyDeleteConnections(Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_REALTIME)
|
->setType(DELETE_TYPE_REALTIME)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -60))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -60))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteExpiredSessions(Delete $deletes)
|
function notifyDeleteExpiredSessions(Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_SESSIONS)
|
->setType(DELETE_TYPE_SESSIONS)
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
@ -111,19 +111,19 @@ class Maintenance extends Action
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteCache($interval, Delete $deletes)
|
function notifyDeleteCache($interval, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
|
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_CACHE_BY_TIMESTAMP)
|
->setType(DELETE_TYPE_CACHE_BY_TIMESTAMP)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyDeleteSchedules($interval, Delete $deletes)
|
function notifyDeleteSchedules($interval, Delete $queueForDeletes)
|
||||||
{
|
{
|
||||||
|
|
||||||
($deletes)
|
($queueForDeletes)
|
||||||
->setType(DELETE_TYPE_SCHEDULES)
|
->setType(DELETE_TYPE_SCHEDULES)
|
||||||
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
|
||||||
->trigger();
|
->trigger();
|
||||||
|
@ -139,19 +139,19 @@ class Maintenance extends Action
|
||||||
$cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days
|
$cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days
|
||||||
$schedulesDeletionRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_SCHEDULES', '86400'); // 1 Day
|
$schedulesDeletionRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_SCHEDULES', '86400'); // 1 Day
|
||||||
|
|
||||||
Console::loop(function () use ($interval, $executionLogsRetention, $abuseLogsRetention, $auditLogRetention, $cacheRetention, $schedulesDeletionRetention, $usageStatsRetentionHourly, $dbForConsole, $deletes, $certificates) {
|
Console::loop(function () use ($interval, $executionLogsRetention, $abuseLogsRetention, $auditLogRetention, $cacheRetention, $schedulesDeletionRetention, $usageStatsRetentionHourly, $dbForConsole, $queueForDeletes, $queueForCertificates) {
|
||||||
$time = DateTime::now();
|
$time = DateTime::now();
|
||||||
|
|
||||||
Console::info("[{$time}] Notifying workers with maintenance tasks every {$interval} seconds");
|
Console::info("[{$time}] Notifying workers with maintenance tasks every {$interval} seconds");
|
||||||
notifyDeleteExecutionLogs($executionLogsRetention, $deletes);
|
notifyDeleteExecutionLogs($executionLogsRetention, $queueForDeletes);
|
||||||
notifyDeleteAbuseLogs($abuseLogsRetention, $deletes);
|
notifyDeleteAbuseLogs($abuseLogsRetention, $queueForDeletes);
|
||||||
notifyDeleteAuditLogs($auditLogRetention, $deletes);
|
notifyDeleteAuditLogs($auditLogRetention, $queueForDeletes);
|
||||||
notifyDeleteUsageStats($usageStatsRetentionHourly, $deletes);
|
notifyDeleteUsageStats($usageStatsRetentionHourly, $queueForDeletes);
|
||||||
notifyDeleteConnections($deletes);
|
notifyDeleteConnections($queueForDeletes);
|
||||||
notifyDeleteExpiredSessions($deletes);
|
notifyDeleteExpiredSessions($queueForDeletes);
|
||||||
renewCertificates($dbForConsole, $certificates);
|
renewCertificates($dbForConsole, $queueForCertificates);
|
||||||
notifyDeleteCache($cacheRetention, $deletes);
|
notifyDeleteCache($cacheRetention, $queueForDeletes);
|
||||||
notifyDeleteSchedules($schedulesDeletionRetention, $deletes);
|
notifyDeleteSchedules($schedulesDeletionRetention, $queueForDeletes);
|
||||||
}, $interval);
|
}, $interval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue