1
0
Fork 0
mirror of synced 2024-06-02 19:04:49 +12:00

Rollback of services and providers sub-collections

This commit is contained in:
Matej Baco 2021-09-02 11:38:24 +02:00
parent 0ab76a1c6f
commit 524abc80d7
3 changed files with 11 additions and 103 deletions

View file

@ -478,7 +478,7 @@ $collections = [
'required' => false,
'default' => null,
'array' => false,
'filters' => ['subQueryServices'],
'filters' => ['json'],
],
[
'$id' => 'auths',
@ -500,7 +500,7 @@ $collections = [
'required' => false,
'default' => null,
'array' => false,
'filters' => ['subQueryProviders'],
'filters' => ['json'],
],
[
'$id' => 'platforms',

View file

@ -93,9 +93,9 @@ App::post('/v1/projects')
'legalCity' => $legalCity,
'legalAddress' => $legalAddress,
'legalTaxId' => $legalTaxId,
'services' => null,
'services' => new stdClass(),
'platforms' => null,
'providers' => null,
'providers' => [],
'webhooks' => null,
'keys' => null,
'domains' => null,
@ -484,37 +484,10 @@ App::patch('/v1/projects/:projectId/service')
throw new Exception('Project not found', 404);
}
$document = $dbForConsole->findOne('services', [
new Query('projectId', Query::TYPE_EQUAL, [$project->getId()]),
new Query('key', Query::TYPE_EQUAL, [$service]),
]);
$services = $project->getAttribute('services', []);
$services[$service] = $status;
if($document == false || $document->isEmpty()) {
$document = new Document([
'$id' => $dbForConsole->getId(),
'$read' => ['role:all'],
'$write' => ['role:all'],
'projectId' => $project->getId(),
'key' => $service,
'status' => $status,
]);
$dbForConsole->createDocument('services', $document);
$project
->setAttribute('services', $document, Document::SET_TYPE_APPEND);
$dbForConsole->purgeDocument('projects', $project->getId());
} else {
if($document->getAttribute('status') != $status) {
$document->setAttribute('status', $status);
$dbForConsole->updateDocument('services', $document->getId(), $document);
$project->findAndReplace('$id', $document->getId(), $document, 'services');
$dbForConsole->purgeDocument('projects', $project->getId());
}
}
$project = $dbForConsole->updateDocument('projects', $project->getId(), $project->setAttribute('services', $services));
$response->dynamic($project, Response::MODEL_PROJECT);
});
@ -550,37 +523,11 @@ App::patch('/v1/projects/:projectId/oauth2')
new Query('projectId', Query::TYPE_EQUAL, [$project->getId()]),
]);
if($provider && !$provider->isEmpty()) {
// Provider exists
$providers = $project->getAttribute('providers', []);
$providers[$provider . 'Appid'] = $appId;
$providers[$provider . 'Secret'] = $secret;
$provider->setAttribute('appId', $appId)
->setAttribute('appSecret', $secret);
$dbForConsole->updateDocument('providers', $provider->getId(), $provider);
$project->findAndReplace('$id', $provider->getId(), $provider, 'providers');
$dbForConsole->purgeDocument('projects', $project->getId());
} else {
// Provider does not exist yet
$provider = new Document([
'$id' => $dbForConsole->getId(),
'$read' => ['role:all'],
'$write' => ['role:all'],
'projectId' => $project->getId(),
'key' => $providerKey,
'appId' => $appId,
'appSecret' => $secret
]);
$dbForConsole->createDocument('providers', $provider);
$project
->setAttribute('providers', $provider, Document::SET_TYPE_APPEND);
$dbForConsole->purgeDocument('projects', $project->getId());
}
$project = $dbForConsole->updateDocument('projects', $project->getId(), $project->setAttribute('providers', $providers));
$response->dynamic($project, Response::MODEL_PROJECT);
});

View file

@ -251,45 +251,6 @@ Database::addFilter('subQueryWebhooks',
}
);
Database::addFilter('subQueryServices',
function($value) {
return null;
},
function($value, Document $document, Database $database) {
$services = $database
->find('services', [
new Query('projectId', Query::TYPE_EQUAL, [$document->getId()])
], 5000, 0, []);
$responseJson = [];
foreach($services as $service) {
$responseJson[$service->getAttribute('key')] = $service->getAttribute('status', true);
}
return $responseJson;
}
);
Database::addFilter('subQueryProviders',
function($value) {
return null;
},
function($value, Document $document, Database $database) {
$providers = $database
->find('providers', [
new Query('projectId', Query::TYPE_EQUAL, [$document->getId()])
], 5000, 0, []);
$responseJson = [];
foreach($providers as $provider) {
$responseJson[$provider->getAttribute('key') . 'Appid'] = $provider->getAttribute('appId');
$responseJson[$provider->getAttribute('key') . 'Secret'] = $provider->getAttribute('appSecret');
}
return $responseJson;
}
);
Database::addFilter('encrypt',
function($value) {
$key = App::getEnv('_APP_OPENSSL_KEY_V1');