From 7b1dd6b2c35a10014d6fc5083c26d7f55d0292dc Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Wed, 25 Mar 2020 22:19:19 +0200 Subject: [PATCH 1/6] Updated all the REST API query params to be in camelCase --- CHANGES.md | 6 ++++ app/controllers/api/account.php | 12 +++---- app/controllers/api/database.php | 6 ++-- app/views/console/database/collection.phtml | 8 ++--- app/views/console/database/index.phtml | 18 +++++----- app/views/console/storage/index.phtml | 8 ++--- app/views/console/users/index.phtml | 16 ++++----- public/dist/scripts/app-all.js | 12 +++---- public/dist/scripts/app-dep.js | 12 +++---- public/scripts/dependencies/appwrite.js | 12 +++---- tests/e2e/Services/Account/AccountBase.php | 18 +++++----- tests/e2e/Services/Database/DatabaseBase.php | 36 ++++++++++---------- 12 files changed, 85 insertions(+), 79 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index b57ae948b1..c5c78fd024 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,9 @@ +# Version 0.6.0 (PRE-RELEASE) + +## Breaking Changes + +* Updated all the REST API query params to be in camelCase + # Version 0.5.3 (PRE-RELEASE) ## Bug Fixes diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 7c319d296d..0918cc6f68 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -692,7 +692,7 @@ $utopia->patch('/v1/account/password') ->label('sdk.method', 'updatePassword') ->label('sdk.description', '/docs/references/account/update-password.md') ->param('password', '', function () { return new Password(); }, 'New user password.') - ->param('old-password', '', function () { return new Password(); }, 'Old user password.') + ->param('oldPassword', '', function () { return new Password(); }, 'Old user password.') ->action( function ($password, $oldPassword) use ($response, $user, $projectDB, $audit, $oauth2Keys) { if (!Auth::passwordVerify($oldPassword, $user->getAttribute('password'))) { // Double check user password @@ -1087,11 +1087,11 @@ $utopia->put('/v1/account/recovery') ->label('abuse-key', 'url:{url},userId:{param-userId}') ->param('userId', '', function () { return new UID(); }, 'User account UID address.') ->param('secret', '', function () { return new Text(256); }, 'Valid reset token.') - ->param('password-a', '', function () { return new Password(); }, 'New password.') - ->param('password-b', '', function () {return new Password(); }, 'New password again.') + ->param('password', '', function () { return new Password(); }, 'New password.') + ->param('passwordAgain', '', function () {return new Password(); }, 'New password again.') ->action( - function ($userId, $secret, $passwordA, $passwordB) use ($response, $projectDB, $audit) { - if ($passwordA !== $passwordB) { + function ($userId, $secret, $password, $passwordAgain) use ($response, $projectDB, $audit) { + if ($password !== $passwordAgain) { throw new Exception('Passwords must match', 400); } @@ -1117,7 +1117,7 @@ $utopia->put('/v1/account/recovery') Authorization::setRole('user:'.$profile->getId()); $profile = $projectDB->updateDocument(array_merge($profile->getArrayCopy(), [ - 'password' => Auth::passwordHash($passwordA), + 'password' => Auth::passwordHash($password), 'password-update' => time(), 'emailVerification' => true, ])); diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index 94dec67e90..34937e97f1 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -379,9 +379,9 @@ $utopia->get('/v1/database/collections/:collectionId/documents') ->param('filters', [], function () { return new ArrayList(new Text(128)); }, 'Array of filter strings. Each filter is constructed from a key name, comparison operator (=, !=, >, <, <=, >=) and a value. You can also use a dot (.) separator in attribute names to filter by child document attributes. Examples: \'name=John Doe\' or \'category.$id>=5bed2d152c362\'.', true) ->param('offset', 0, function () { return new Range(0, 900000000); }, 'Offset value. Use this value to manage pagination.', true) ->param('limit', 50, function () { return new Range(0, 1000); }, 'Maximum number of documents to return in response. Use this value to manage pagination.', true) - ->param('order-field', '$id', function () { return new Text(128); }, 'Document field that results will be sorted by.', true) - ->param('order-type', 'ASC', function () { return new WhiteList(array('DESC', 'ASC')); }, 'Order direction. Possible values are DESC for descending order, or ASC for ascending order.', true) - ->param('order-cast', 'string', function () { return new WhiteList(array('int', 'string', 'date', 'time', 'datetime')); }, 'Order field type casting. Possible values are int, string, date, time or datetime. The database will attempt to cast the order field to the value you pass here. The default value is a string.', true) + ->param('orderField', '$id', function () { return new Text(128); }, 'Document field that results will be sorted by.', true) + ->param('orderType', 'ASC', function () { return new WhiteList(array('DESC', 'ASC')); }, 'Order direction. Possible values are DESC for descending order, or ASC for ascending order.', true) + ->param('orderCast', 'string', function () { return new WhiteList(array('int', 'string', 'date', 'time', 'datetime')); }, 'Order field type casting. Possible values are int, string, date, time or datetime. The database will attempt to cast the order field to the value you pass here. The default value is a string.', true) ->param('search', '', function () { return new Text(256); }, 'Search query. Enter any free text search. The database will try to find a match against all document attributes and children.', true) ->param('first', 0, function () { return new Range(0, 1); }, 'Return only first document. Pass 1 for true or 0 for false. The default value is 0.', true) ->param('last', 0, function () { return new Range(0, 1); }, 'Return only last document. Pass 1 for true or 0 for false. The default value is 0.', true) diff --git a/app/views/console/database/collection.phtml b/app/views/console/database/collection.phtml index 8a904fe74a..5202444180 100644 --- a/app/views/console/database/collection.phtml +++ b/app/views/console/database/collection.phtml @@ -47,7 +47,7 @@ $collection = $this->getParam('collection', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" @@ -69,7 +69,7 @@ $collection = $this->getParam('collection', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="{{router.params.offset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents"> @@ -132,7 +132,7 @@ $collection = $this->getParam('collection', []); data-param-collection-id="{{router.params.id}}" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" @@ -148,7 +148,7 @@ $collection = $this->getParam('collection', []); data-param-collection-id="{{router.params.id}}" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" diff --git a/app/views/console/database/index.phtml b/app/views/console/database/index.phtml index 46fa1c82d0..8b148c18d2 100644 --- a/app/views/console/database/index.phtml +++ b/app/views/console/database/index.phtml @@ -42,7 +42,7 @@ data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-collections" data-success="state" @@ -60,7 +60,7 @@ data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="{{router.params.offset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-collections"> @@ -77,7 +77,7 @@ data-param-search="" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" @@ -100,7 +100,7 @@ data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-collections" data-success="state" @@ -115,7 +115,7 @@ data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-collections" data-success="state" @@ -139,7 +139,7 @@ data-param-search="{{router.params.dsearch}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" @@ -158,7 +158,7 @@ data-param-search="{{router.params.dsearch}}" data-param-limit="" data-param-offset="{{router.params.doffset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents"> @@ -196,7 +196,7 @@ data-param-collection-id="{{router.params.collectionId}}" data-param-search="{{router.params.dsearch}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" @@ -212,7 +212,7 @@ data-param-collection-id="{{router.params.collectionId}}" data-param-search="{{router.params.dsearch}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-documents" data-success="state" diff --git a/app/views/console/storage/index.phtml b/app/views/console/storage/index.phtml index 50fdc3941d..40ea973a42 100644 --- a/app/views/console/storage/index.phtml +++ b/app/views/console/storage/index.phtml @@ -57,7 +57,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-files" data-success="state" @@ -78,7 +78,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="{{router.params.offset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-files"> @@ -207,7 +207,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-files" data-success="state" @@ -222,7 +222,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-files" data-success="state" diff --git a/app/views/console/users/index.phtml b/app/views/console/users/index.phtml index 38643da6c0..c371ddb54b 100644 --- a/app/views/console/users/index.phtml +++ b/app/views/console/users/index.phtml @@ -56,7 +56,7 @@ $providers = $this->getParam('providers', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-users" data-success="state" @@ -77,7 +77,7 @@ $providers = $this->getParam('providers', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="{{router.params.offset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-users"> @@ -141,7 +141,7 @@ $providers = $this->getParam('providers', []); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-users" data-success="state" @@ -156,7 +156,7 @@ $providers = $this->getParam('providers', []); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-users" data-success="state" @@ -203,7 +203,7 @@ $providers = $this->getParam('providers', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-teams" data-success="state" @@ -224,7 +224,7 @@ $providers = $this->getParam('providers', []); data-param-search="{{router.params.search}}" data-param-limit="" data-param-offset="{{router.params.offset}}" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-teams"> @@ -298,7 +298,7 @@ $providers = $this->getParam('providers', []); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-teams" data-success="state" @@ -313,7 +313,7 @@ $providers = $this->getParam('providers', []); data-event="submit" data-param-search="{{router.params.search}}" data-param-limit="" - data-param-order-type="DESC" + data-param-orderType="DESC" data-scope="sdk" data-name="project-teams" data-success="state" diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 6a441c7258..494635e7bd 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -33,7 +33,7 @@ let path='/account/name';let payload={};if(name){payload['name']=name;} return http.patch(path,{'content-type':'application/json',},payload);},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPassword"');} let path='/account/password';let payload={};if(password){payload['password']=password;} -if(oldPassword){payload['old-password']=oldPassword;} +if(oldPassword){payload['oldPassword']=oldPassword;} return http.patch(path,{'content-type':'application/json',},payload);},getPrefs:function(){let path='/account/prefs';let payload={};return http.get(path,{'content-type':'application/json',},payload);},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} let path='/account/prefs';let payload={};if(prefs){payload['prefs']=prefs;} return http.patch(path,{'content-type':'application/json',},payload);},createRecovery:function(email,url){if(email===undefined){throw new Error('Missing required parameter: "email"');} @@ -46,8 +46,8 @@ if(passwordA===undefined){throw new Error('Missing required parameter: "password if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} let path='/account/recovery';let payload={};if(userId){payload['userId']=userId;} if(secret){payload['secret']=secret;} -if(passwordA){payload['password-a']=passwordA;} -if(passwordB){payload['password-b']=passwordB;} +if(passwordA){payload['password']=passwordA;} +if(passwordB){payload['passwordAgain']=passwordB;} return http.put(path,{'content-type':'application/json',},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json',},payload);},createSession:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} let path='/account/sessions';let payload={};if(email){payload['email']=email;} @@ -113,9 +113,9 @@ let path='/database/collections/{collectionId}'.replace(new RegExp('{collectionI let path='/database/collections/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(filters){payload['filters']=filters;} if(offset){payload['offset']=offset;} if(limit){payload['limit']=limit;} -if(orderField){payload['order-field']=orderField;} -if(orderType){payload['order-type']=orderType;} -if(orderCast){payload['order-cast']=orderCast;} +if(orderField){payload['orderField']=orderField;} +if(orderType){payload['orderType']=orderType;} +if(orderCast){payload['orderCast']=orderCast;} if(search){payload['search']=search;} if(first){payload['first']=first;} if(last){payload['last']=last;} diff --git a/public/dist/scripts/app-dep.js b/public/dist/scripts/app-dep.js index 79b84a8a00..7527847e82 100644 --- a/public/dist/scripts/app-dep.js +++ b/public/dist/scripts/app-dep.js @@ -33,7 +33,7 @@ let path='/account/name';let payload={};if(name){payload['name']=name;} return http.patch(path,{'content-type':'application/json',},payload);},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPassword"');} let path='/account/password';let payload={};if(password){payload['password']=password;} -if(oldPassword){payload['old-password']=oldPassword;} +if(oldPassword){payload['oldPassword']=oldPassword;} return http.patch(path,{'content-type':'application/json',},payload);},getPrefs:function(){let path='/account/prefs';let payload={};return http.get(path,{'content-type':'application/json',},payload);},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} let path='/account/prefs';let payload={};if(prefs){payload['prefs']=prefs;} return http.patch(path,{'content-type':'application/json',},payload);},createRecovery:function(email,url){if(email===undefined){throw new Error('Missing required parameter: "email"');} @@ -46,8 +46,8 @@ if(passwordA===undefined){throw new Error('Missing required parameter: "password if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} let path='/account/recovery';let payload={};if(userId){payload['userId']=userId;} if(secret){payload['secret']=secret;} -if(passwordA){payload['password-a']=passwordA;} -if(passwordB){payload['password-b']=passwordB;} +if(passwordA){payload['password']=passwordA;} +if(passwordB){payload['passwordAgain']=passwordB;} return http.put(path,{'content-type':'application/json',},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json',},payload);},createSession:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} let path='/account/sessions';let payload={};if(email){payload['email']=email;} @@ -113,9 +113,9 @@ let path='/database/collections/{collectionId}'.replace(new RegExp('{collectionI let path='/database/collections/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(filters){payload['filters']=filters;} if(offset){payload['offset']=offset;} if(limit){payload['limit']=limit;} -if(orderField){payload['order-field']=orderField;} -if(orderType){payload['order-type']=orderType;} -if(orderCast){payload['order-cast']=orderCast;} +if(orderField){payload['orderField']=orderField;} +if(orderType){payload['orderType']=orderType;} +if(orderCast){payload['orderCast']=orderCast;} if(search){payload['search']=search;} if(first){payload['first']=first;} if(last){payload['last']=last;} diff --git a/public/scripts/dependencies/appwrite.js b/public/scripts/dependencies/appwrite.js index f707b7f779..ecea758163 100644 --- a/public/scripts/dependencies/appwrite.js +++ b/public/scripts/dependencies/appwrite.js @@ -516,7 +516,7 @@ } if(oldPassword) { - payload['old-password'] = oldPassword; + payload['oldPassword'] = oldPassword; } return http @@ -665,11 +665,11 @@ } if(passwordA) { - payload['password-a'] = passwordA; + payload['password'] = passwordA; } if(passwordB) { - payload['password-b'] = passwordB; + payload['passwordAgain'] = passwordB; } return http @@ -1401,15 +1401,15 @@ } if(orderField) { - payload['order-field'] = orderField; + payload['orderField'] = orderField; } if(orderType) { - payload['order-type'] = orderType; + payload['orderType'] = orderType; } if(orderCast) { - payload['order-cast'] = orderCast; + payload['orderCast'] = orderCast; } if(search) { diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index bb9b3d8d60..0bd7a1a661 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -449,7 +449,7 @@ trait AccountBase 'cookie' => 'a_session_'.$this->getProject()['$id'].'=' . $session, ]), [ 'password' => 'new-password', - 'old-password' => $password, + 'oldPassword' => $password, ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -1019,8 +1019,8 @@ trait AccountBase ]), [ 'userId' => $id, 'secret' => $recovery, - 'password-a' => $newPassowrd, - 'password-b' => $newPassowrd, + 'password' => $newPassowrd, + 'passwordAgain' => $newPassowrd, ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -1035,8 +1035,8 @@ trait AccountBase ]), [ 'userId' => 'ewewe', 'secret' => $recovery, - 'password-a' => $newPassowrd, - 'password-b' => $newPassowrd, + 'password' => $newPassowrd, + 'passwordAgain' => $newPassowrd, ]); $this->assertEquals(404, $response['headers']['status-code']); @@ -1048,8 +1048,8 @@ trait AccountBase ]), [ 'userId' => $id, 'secret' => 'sdasdasdasd', - 'password-a' => $newPassowrd, - 'password-b' => $newPassowrd, + 'password' => $newPassowrd, + 'passwordAgain' => $newPassowrd, ]); $this->assertEquals(401, $response['headers']['status-code']); @@ -1061,8 +1061,8 @@ trait AccountBase ]), [ 'userId' => $id, 'secret' => $recovery, - 'password-a' => $newPassowrd.'x', - 'password-b' => $newPassowrd, + 'password' => $newPassowrd.'x', + 'passwordAgain' => $newPassowrd, ]); $this->assertEquals(400, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Database/DatabaseBase.php b/tests/e2e/Services/Database/DatabaseBase.php index 15ffb19014..60dc1f81cc 100644 --- a/tests/e2e/Services/Database/DatabaseBase.php +++ b/tests/e2e/Services/Database/DatabaseBase.php @@ -254,9 +254,9 @@ trait DatabaseBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'order-field' => 'releaseYear', - 'order-type' => 'ASC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'ASC', + 'orderCast' => 'int', ]); $this->assertEquals(1944, $documents['body']['documents'][0]['releaseYear']); @@ -268,9 +268,9 @@ trait DatabaseBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'order-field' => 'releaseYear', - 'order-type' => 'DESC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'DESC', + 'orderCast' => 'int', ]); $this->assertEquals(1944, $documents['body']['documents'][2]['releaseYear']); @@ -291,9 +291,9 @@ trait DatabaseBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'limit' => 1, - 'order-field' => 'releaseYear', - 'order-type' => 'ASC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'ASC', + 'orderCast' => 'int', ]); $this->assertEquals(1944, $documents['body']['documents'][0]['releaseYear']); @@ -305,9 +305,9 @@ trait DatabaseBase ], $this->getHeaders()), [ 'limit' => 2, 'offset' => 1, - 'order-field' => 'releaseYear', - 'order-type' => 'ASC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'ASC', + 'orderCast' => 'int', ]); $this->assertEquals(2017, $documents['body']['documents'][0]['releaseYear']); @@ -327,9 +327,9 @@ trait DatabaseBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'limit' => 1, - 'order-field' => 'releaseYear', - 'order-type' => 'ASC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'ASC', + 'orderCast' => 'int', 'first' => true, ]); @@ -341,9 +341,9 @@ trait DatabaseBase ], $this->getHeaders()), [ 'limit' => 2, 'offset' => 1, - 'order-field' => 'releaseYear', - 'order-type' => 'ASC', - 'order-cast' => 'int', + 'orderField' => 'releaseYear', + 'orderType' => 'ASC', + 'orderCast' => 'int', 'last' => true, ]); From 6fb6c8ebacc7141376d054881160f933f45986b8 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Fri, 27 Mar 2020 20:07:10 +0300 Subject: [PATCH 2/6] Added TS SDK --- app/tasks/sdks.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index eef7452f74..c768bf48ca 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -15,6 +15,7 @@ use Appwrite\SDK\Language\Python; use Appwrite\SDK\Language\Ruby; use Appwrite\SDK\Language\Dart; use Appwrite\SDK\Language\Go; +use Appwrite\SDK\Language\Typescript; $cli = new CLI(); @@ -88,6 +89,13 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ->setBowerPackage('appwrite') ; break; + case 'typescript': + $config = new Typescript(); + $config + ->setNPMPackage('appwrite') + ->setBowerPackage('appwrite') + ; + break; case 'nodejs': $config = new Node(); $config From 45486223865a5c06a6d1473eeea71e87afed36b0 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Sat, 28 Mar 2020 15:42:16 +0300 Subject: [PATCH 3/6] Added config manager --- app/app.php | 16 +++++--- app/config/collections.php | 23 ++++++----- app/controllers/api/account.php | 45 ++++++++++++-------- app/controllers/api/avatars.php | 7 ++-- app/controllers/api/projects.php | 18 ++++---- app/controllers/api/storage.php | 8 ++-- app/controllers/api/teams.php | 6 ++- app/controllers/api/users.php | 21 +++++----- app/controllers/shared/web.php | 11 +++-- app/controllers/web/console.php | 20 ++++----- app/controllers/web/home.php | 7 ++-- app/init.php | 47 +++++++++++---------- app/tasks/sdks.php | 3 +- app/tasks/upgrade.php | 5 ++- app/workers/certificates.php | 5 ++- app/workers/tasks.php | 5 ++- app/workers/usage.php | 6 ++- app/workers/webhooks.php | 5 ++- composer.json | 1 + composer.lock | 70 ++++++++++++++++++++++++++------ docker-compose.yml | 24 +++++------ 21 files changed, 213 insertions(+), 140 deletions(-) diff --git a/app/app.php b/app/app.php index 16f8421a7c..8a91cd49a7 100644 --- a/app/app.php +++ b/app/app.php @@ -3,12 +3,13 @@ // Init require_once __DIR__.'/init.php'; -global $env, $utopia, $request, $response, $register, $consoleDB, $project, $domain, $version, $service, $protocol, $domainVerification; +global $utopia, $request, $response, $register, $consoleDB, $project, $service; use Utopia\App; use Utopia\Request; use Utopia\View; use Utopia\Exception; +use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Auth\Auth; use Appwrite\Database\Database; @@ -50,7 +51,7 @@ $clients = array_unique(array_merge($clientsConsole, array_map(function ($node) return false; })))); -$utopia->init(function () use ($utopia, $request, $response, &$user, $project, $roles, $webhook, $audit, $usage, $domain, $clients, &$domainVerification) { +$utopia->init(function () use ($utopia, $request, $response, &$user, $project, $roles, $webhook, $audit, $usage, $clients) { $route = $utopia->match($request); @@ -62,10 +63,10 @@ $utopia->init(function () use ($utopia, $request, $response, &$user, $project, $ $refDomain = $protocol.'://'.((in_array($origin, $clients)) ? $origin : 'localhost') . (!empty($port) ? ':'.$port : ''); - $selfDomain = new Domain($domain); + $selfDomain = new Domain(Config::getParam('domain')); $endDomain = new Domain($origin); - $domainVerification = ($selfDomain->getRegisterable() === $endDomain->getRegisterable()); + Config::setParam('domainVerification', ($selfDomain->getRegisterable() === $endDomain->getRegisterable())); /* * Security Headers @@ -138,7 +139,7 @@ $utopia->init(function () use ($utopia, $request, $response, &$user, $project, $ $user = new Document([ '$id' => 0, 'status' => Auth::USER_STATUS_ACTIVATED, - 'email' => 'app.'.$project->getId().'@service.'.$domain, + 'email' => 'app.'.$project->getId().'@service.'.Config::getParam('domain'), 'password' => '', 'name' => $project->getAttribute('name', 'Untitled'), ]); @@ -247,7 +248,10 @@ $utopia->options(function () use ($request, $response) { ->send(); }); -$utopia->error(function ($error /* @var $error Exception */) use ($request, $response, $utopia, $project, $env, $version) { +$utopia->error(function ($error /* @var $error Exception */) use ($request, $response, $utopia, $project) { + $env = Config::getParam('env'); + $version = Config::getParam('version'); + switch ($error->getCode()) { case 400: // Error allowed publicly case 401: // Error allowed publicly diff --git a/app/config/collections.php b/app/config/collections.php index 1314db6894..4b23a1edde 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1,9 +1,12 @@ [ '$id' => 'console', @@ -1189,15 +1192,15 @@ $collections = [ /* * Add enabled OAuth2 providers to default data rules */ -foreach ($providers as $key => $provider) { +foreach ($providers as $index => $provider) { if (!$provider['enabled']) { continue; } $collections[Database::SYSTEM_COLLECTION_PROJECTS]['rules'][] = [ '$collection' => Database::SYSTEM_COLLECTION_RULES, - 'label' => 'OAuth2 '.ucfirst($key).' ID', - 'key' => 'usersOauth2'.ucfirst($key).'Appid', + 'label' => 'OAuth2 '.ucfirst($index).' ID', + 'key' => 'usersOauth2'.ucfirst($index).'Appid', 'type' => 'text', 'default' => '', 'required' => false, @@ -1206,8 +1209,8 @@ foreach ($providers as $key => $provider) { $collections[Database::SYSTEM_COLLECTION_PROJECTS]['rules'][] = [ '$collection' => Database::SYSTEM_COLLECTION_RULES, - 'label' => 'OAuth2 '.ucfirst($key).' Secret', - 'key' => 'usersOauth2'.ucfirst($key).'Secret', + 'label' => 'OAuth2 '.ucfirst($index).' Secret', + 'key' => 'usersOauth2'.ucfirst($index).'Secret', 'type' => 'text', 'default' => '', 'required' => false, @@ -1216,8 +1219,8 @@ foreach ($providers as $key => $provider) { $collections[Database::SYSTEM_COLLECTION_USERS]['rules'][] = [ '$collection' => Database::SYSTEM_COLLECTION_RULES, - 'label' => 'OAuth2 '.ucfirst($key).' ID', - 'key' => 'oauth2'.ucfirst($key), + 'label' => 'OAuth2 '.ucfirst($index).' ID', + 'key' => 'oauth2'.ucfirst($index), 'type' => 'text', 'default' => '', 'required' => false, @@ -1226,8 +1229,8 @@ foreach ($providers as $key => $provider) { $collections[Database::SYSTEM_COLLECTION_USERS]['rules'][] = [ '$collection' => Database::SYSTEM_COLLECTION_RULES, - 'label' => 'OAuth2 '.ucfirst($key).' Access Token', - 'key' => 'oauth2'.ucfirst($key).'AccessToken', + 'label' => 'OAuth2 '.ucfirst($index).' Access Token', + 'key' => 'oauth2'.ucfirst($index).'AccessToken', 'type' => 'text', 'default' => '', 'required' => false, diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 7c319d296d..af59d8ebdd 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -1,10 +1,11 @@ init(function() use ($providers, &$oauth2Keys) { - foreach ($providers as $key => $provider) { +$utopia->init(function() use (&$oauth2Keys) { + foreach (Config::getParam('providers') as $key => $provider) { if (!$provider['enabled']) { continue; } @@ -155,7 +156,8 @@ $utopia->post('/v1/account/sessions') ->param('email', '', function () { return new Email(); }, 'User email.') ->param('password', '', function () { return new Password(); }, 'User password.') ->action( - function ($email, $password) use ($response, $request, $projectDB, $audit, $webhook, $protocol, $domainVerification) { + function ($email, $password) use ($response, $request, $projectDB, $audit, $webhook) { + $protocol = Config::getParam('protocol'); $profile = $projectDB->getCollection([ // Get user by email address 'limit' => 1, 'first' => true, @@ -216,7 +218,7 @@ $utopia->post('/v1/account/sessions') ->setParam('resource', 'users/'.$profile->getId()) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([Auth::$cookieName => Auth::encodeSession($profile->getId(), $secret)])) ; @@ -244,11 +246,12 @@ $utopia->get('/v1/account/sessions/oauth2/:provider') ->label('sdk.location', true) ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') - ->param('provider', '', function () use ($providers) { return new WhiteList(array_keys($providers)); }, 'OAuth2 Provider. Currently, supported providers are: ' . implode(', ', array_keys(array_filter($providers, function($node) {return (!$node['mock']);}))).'.') + ->param('provider', '', function () { return new WhiteList(array_keys(Config::getParam('providers'))); }, 'OAuth2 Provider. Currently, supported providers are: ' . implode(', ', array_keys(array_filter(Config::getParam('providers'), function($node) {return (!$node['mock']);}))).'.') ->param('success', '', function () use ($clients) { return new Host($clients); }, 'URL to redirect back to your app after a successful login attempt.') ->param('failure', '', function () use ($clients) { return new Host($clients); }, 'URL to redirect back to your app after a failed login attempt.') ->action( - function ($provider, $success, $failure) use ($response, $request, $project, $protocol) { + function ($provider, $success, $failure) use ($response, $request, $project) { + $protocol = Config::getParam('protocol'); $callback = $protocol.'://'.$request->getServer('HTTP_HOST').'/v1/account/sessions/oauth2/callback/'.$provider.'/'.$project->getId(); $appId = $project->getAttribute('usersOauth2'.ucfirst($provider).'Appid', ''); $appSecret = $project->getAttribute('usersOauth2'.ucfirst($provider).'Secret', '{}'); @@ -282,11 +285,13 @@ $utopia->get('/v1/account/sessions/oauth2/callback/:provider/:projectId') ->label('scope', 'public') ->label('docs', false) ->param('projectId', '', function () { return new Text(1024); }, 'Project unique ID.') - ->param('provider', '', function () use ($providers) { return new WhiteList(array_keys($providers)); }, 'OAuth2 provider.') + ->param('provider', '', function () { return new WhiteList(array_keys(Config::getParam('providers'))); }, 'OAuth2 provider.') ->param('code', '', function () { return new Text(1024); }, 'OAuth2 code.') ->param('state', '', function () { return new Text(2048); }, 'Login state params.', true) ->action( - function ($projectId, $provider, $code, $state) use ($response, $request, $domain, $protocol) { + function ($projectId, $provider, $code, $state) use ($response) { + $domain = Config::getParam('domain'); + $protocol = Config::getParam('protocol'); $response->redirect($protocol.'://'.$domain.'/v1/account/sessions/oauth2/'.$provider.'/redirect?' .http_build_query(['project' => $projectId, 'code' => $code, 'state' => $state])); } @@ -300,11 +305,12 @@ $utopia->get('/v1/account/sessions/oauth2/:provider/redirect') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->label('docs', false) - ->param('provider', '', function () use ($providers) { return new WhiteList(array_keys($providers)); }, 'OAuth2 provider.') + ->param('provider', '', function () { return new WhiteList(array_keys(Config::getParam('providers'))); }, 'OAuth2 provider.') ->param('code', '', function () { return new Text(1024); }, 'OAuth2 code.') ->param('state', '', function () { return new Text(2048); }, 'OAuth2 state params.', true) ->action( - function ($provider, $code, $state) use ($response, $request, $user, $projectDB, $project, $audit, $protocol, $domainVerification) { + function ($provider, $code, $state) use ($response, $request, $user, $projectDB, $project, $audit) { + $protocol = Config::getParam('protocol'); $callback = $protocol.'://'.$request->getServer('HTTP_HOST').'/v1/account/sessions/oauth2/callback/'.$provider.'/'.$project->getId(); $defaultState = ['success' => $project->getAttribute('url', ''), 'failure' => '']; $validateURL = new URL(); @@ -457,7 +463,7 @@ $utopia->get('/v1/account/sessions/oauth2/:provider/redirect') ->setParam('data', ['provider' => $provider]) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([Auth::$cookieName => Auth::encodeSession($user->getId(), $secret)])) ; @@ -832,7 +838,8 @@ $utopia->delete('/v1/account') ->label('sdk.method', 'delete') ->label('sdk.description', '/docs/references/account/delete.md') ->action( - function () use ($response, $user, $projectDB, $audit, $webhook, $protocol, $domainVerification) { + function () use ($response, $user, $projectDB, $audit, $webhook) { + $protocol = Config::getParam('protocol'); $user = $projectDB->updateDocument(array_merge($user->getArrayCopy(), [ 'status' => Auth::USER_STATUS_BLOCKED, ])); @@ -863,7 +870,7 @@ $utopia->delete('/v1/account') ]) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([])) ; @@ -888,7 +895,8 @@ $utopia->delete('/v1/account/sessions/:sessionId') ->label('abuse-limit', 100) ->param('sessionId', null, function () { return new UID(); }, 'Session unique ID. Use the string \'current\' to delete the current device session.') ->action( - function ($sessionId) use ($response, $user, $projectDB, $webhook, $audit, $protocol, $domainVerification) { + function ($sessionId) use ($response, $user, $projectDB, $webhook, $audit) { + $protocol = Config::getParam('protocol'); $sessionId = ($sessionId === 'current') ? Auth::tokenVerify($user->getAttribute('tokens'), Auth::TOKEN_TYPE_LOGIN, Auth::$secret) : $sessionId; @@ -914,7 +922,7 @@ $utopia->delete('/v1/account/sessions/:sessionId') ]) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([])) ; @@ -945,7 +953,8 @@ $utopia->delete('/v1/account/sessions') ->label('sdk.description', '/docs/references/account/delete-sessions.md') ->label('abuse-limit', 100) ->action( - function () use ($response, $user, $projectDB, $audit, $webhook, $protocol, $domainVerification) { + function () use ($response, $user, $projectDB, $audit, $webhook) { + $protocol = Config::getParam('protocol'); $tokens = $user->getAttribute('tokens', []); foreach ($tokens as $token) { /* @var $token Document */ @@ -966,7 +975,7 @@ $utopia->delete('/v1/account/sessions') ]) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([])) ; diff --git a/app/controllers/api/avatars.php b/app/controllers/api/avatars.php index fb00725c43..6f26f0eea8 100644 --- a/app/controllers/api/avatars.php +++ b/app/controllers/api/avatars.php @@ -1,6 +1,6 @@ get('/v1/avatars/favicon') ->label('sdk.method', 'getFavicon') ->label('sdk.description', '/docs/references/avatars/get-favicon.md') ->action( - function ($url) use ($response, $request, $version) { + function ($url) use ($response, $request) { $width = 56; $height = 56; $quality = 80; @@ -238,7 +239,7 @@ $utopia->get('/v1/avatars/favicon') CURLOPT_MAXREDIRS => 3, CURLOPT_URL => $url, CURLOPT_USERAGENT => sprintf(APP_USERAGENT, - $version, + Config::getParam('version'), $request->getServer('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY) ), ]); diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 43dbf5877e..fe1fcc386e 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -1,6 +1,6 @@ get('/v1/projects') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'list') ->action( - function () use ($request, $response, $providers, $consoleDB) { + function () use ($request, $response, $consoleDB) { $results = $consoleDB->getCollection([ 'limit' => 20, 'offset' => 0, @@ -105,7 +106,7 @@ $utopia->get('/v1/projects') ]); foreach ($results as $project) { - foreach ($providers as $provider => $node) { + foreach (Config::getParam('providers') as $provider => $node) { $secret = json_decode($project->getAttribute('usersOauth2'.ucfirst($provider).'Secret', '{}'), true); if (!empty($secret) && isset($secret['version'])) { @@ -126,14 +127,14 @@ $utopia->get('/v1/projects/:projectId') ->label('sdk.method', 'get') ->param('projectId', '', function () { return new UID(); }, 'Project unique ID.') ->action( - function ($projectId) use ($request, $response, $providers, $consoleDB) { + function ($projectId) use ($request, $response, $consoleDB) { $project = $consoleDB->getDocument($projectId); if (empty($project->getId()) || Database::SYSTEM_COLLECTION_PROJECTS != $project->getCollection()) { throw new Exception('Project not found', 404); } - foreach ($providers as $provider => $node) { + foreach (Config::getParam('providers') as $provider => $node) { $secret = json_decode($project->getAttribute('usersOauth2'.ucfirst($provider).'Secret', '{}'), true); if (!empty($secret) && isset($secret['version'])) { @@ -331,7 +332,7 @@ $utopia->patch('/v1/projects/:projectId/oauth2') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'updateOAuth2') ->param('projectId', '', function () { return new UID(); }, 'Project unique ID.') - ->param('provider', '', function () use ($providers) { return new WhiteList(array_keys($providers)); }, 'Provider Name', false) + ->param('provider', '', function () { return new WhiteList(array_keys(Config::getParam('providers'))); }, 'Provider Name', false) ->param('appId', '', function () { return new Text(256); }, 'Provider app ID.', true) ->param('secret', '', function () { return new text(256); }, 'Provider secret key.', true) ->action( @@ -1201,8 +1202,9 @@ $utopia->post('/v1/projects/:projectId/domains') ->param('projectId', null, function () { return new UID(); }, 'Project unique ID.') ->param('domain', null, function () { return new DomainValidator(); }, 'Domain name.') ->action( - function ($projectId, $domain) use ($request, $response, $consoleDB) { + function ($projectId) use ($request, $response, $consoleDB) { $project = $consoleDB->getDocument($projectId); + $domain = Config::getParam('domain'); if (empty($project->getId()) || Database::SYSTEM_COLLECTION_PROJECTS != $project->getCollection()) { throw new Exception('Project not found', 404); @@ -1283,7 +1285,7 @@ $utopia->get('/v1/projects/:projectId/domains/:domainId') ->param('projectId', null, function () { return new UID(); }, 'Project unique ID.') ->param('domainId', null, function () { return new UID(); }, 'Domain unique ID.') ->action( - function ($projectId, $domainId) use ($request, $response, $consoleDB) { + function ($projectId, $domainId) use ($response, $consoleDB) { $project = $consoleDB->getDocument($projectId); if (empty($project->getId()) || Database::SYSTEM_COLLECTION_PROJECTS != $project->getCollection()) { diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 2f0000beb7..4a84dbf8dd 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -1,6 +1,6 @@ get('/v1/storage/files/:fileId/preview') //->param('storage', 'local', function () {return new WhiteList(array('local'));}, 'Selected storage device. defaults to local') //->param('token', '', function () {return new Text(128);}, 'Preview token', true) ->action( - function ($fileId, $width, $height, $quality, $background, $output) use ($request, $response, $projectDB, $project, $inputs, $outputs, $fileLogos, $version) { + function ($fileId, $width, $height, $quality, $background, $output) use ($request, $response, $projectDB, $project, $inputs, $outputs, $fileLogos) { $storage = 'local'; if (!extension_loaded('imagick')) { @@ -354,7 +354,7 @@ $utopia->get('/v1/storage/files/:fileId/preview') } $date = date('D, d M Y H:i:s', time() + (60 * 60 * 24 * 45)).' GMT'; // 45 days cache - $key = md5($version.$fileId.$width.$height.$quality.$background.$storage.$output); + $key = md5($fileId.$width.$height.$quality.$background.$storage.$output); $file = $projectDB->getDocument($fileId); @@ -374,7 +374,7 @@ $utopia->get('/v1/storage/files/:fileId/preview') $cipher = null; $background = (empty($background)) ? 'eceff1' : $background; $type = strtolower(pathinfo($path, PATHINFO_EXTENSION)); - $key = md5($version.$path.$width.$height.$quality.$background.$storage.$output); + $key = md5($path.$width.$height.$quality.$background.$storage.$output); } $compressor = new GZIP(); diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index a410bcc9af..ccea694833 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -4,6 +4,7 @@ global $utopia, $register, $request, $response, $projectDB, $project, $user, $au use Utopia\Exception; use Utopia\Response; +use Utopia\Config\Config; use Utopia\Validator\Email; use Utopia\Validator\Text; use Utopia\Validator\Host; @@ -431,7 +432,8 @@ $utopia->patch('/v1/teams/:teamId/memberships/:inviteId/status') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('secret', '', function () { return new Text(256); }, 'Secret key.') ->action( - function ($teamId, $inviteId, $userId, $secret) use ($response, $request, $user, $audit, $projectDB, $protocol, $domainVerification) { + function ($teamId, $inviteId, $userId, $secret) use ($response, $request, $user, $audit, $projectDB) { + $protocol = Config::getParam('protocol'); $membership = $projectDB->getDocument($inviteId); if (empty($membership->getId()) || Database::SYSTEM_COLLECTION_MEMBERSHIPS != $membership->getCollection()) { @@ -525,7 +527,7 @@ $utopia->patch('/v1/teams/:teamId/memberships/:inviteId/status') ->setParam('resource', 'teams/'.$teamId) ; - if(!$domainVerification) { + if(!Config::getParam('domainVerification')) { $response ->addHeader('X-Fallback-Cookies', json_encode([Auth::$cookieName => Auth::encodeSession($user->getId(), $secret)])) ; diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 7563264ecf..e1153a7af9 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -1,6 +1,6 @@ post('/v1/users') ->param('password', '', function () { return new Password(); }, 'User password.') ->param('name', '', function () { return new Text(100); }, 'User name.', true) ->action( - function ($email, $password, $name) use ($response, $register, $projectDB, $providers) { + function ($email, $password, $name) use ($response, $projectDB) { $profile = $projectDB->getCollection([ // Get user by email address 'limit' => 1, 'first' => true, @@ -69,7 +70,7 @@ $utopia->post('/v1/users') $oauth2Keys = []; - foreach ($providers as $key => $provider) { + foreach (Config::getParam('providers') as $key => $provider) { if (!$provider['enabled']) { continue; } @@ -103,7 +104,7 @@ $utopia->get('/v1/users') ->param('offset', 0, function () { return new Range(0, 2000); }, 'Results offset. The default value is 0. Use this param to manage pagination.', true) ->param('orderType', 'ASC', function () { return new WhiteList(['ASC', 'DESC']); }, 'Order result by ASC or DESC order.', true) ->action( - function ($search, $limit, $offset, $orderType) use ($response, $projectDB, $providers) { + function ($search, $limit, $offset, $orderType) use ($response, $projectDB) { $results = $projectDB->getCollection([ 'limit' => $limit, 'offset' => $offset, @@ -118,7 +119,7 @@ $utopia->get('/v1/users') $oauth2Keys = []; - foreach ($providers as $key => $provider) { + foreach (Config::getParam('providers') as $key => $provider) { if (!$provider['enabled']) { continue; } @@ -154,7 +155,7 @@ $utopia->get('/v1/users/:userId') ->label('sdk.description', '/docs/references/users/get-user.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( - function ($userId) use ($response, $projectDB, $providers) { + function ($userId) use ($response, $projectDB) { $user = $projectDB->getDocument($userId); if (empty($user->getId()) || Database::SYSTEM_COLLECTION_USERS != $user->getCollection()) { @@ -163,7 +164,7 @@ $utopia->get('/v1/users/:userId') $oauth2Keys = []; - foreach ($providers as $key => $provider) { + foreach (Config::getParam('providers') as $key => $provider) { if (!$provider['enabled']) { continue; } @@ -352,7 +353,7 @@ $utopia->patch('/v1/users/:userId/status') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('status', '', function () { return new WhiteList([Auth::USER_STATUS_ACTIVATED, Auth::USER_STATUS_BLOCKED, Auth::USER_STATUS_UNACTIVATED]); }, 'User Status code. To activate the user pass '.Auth::USER_STATUS_ACTIVATED.', to block the user pass '.Auth::USER_STATUS_BLOCKED.' and for disabling the user pass '.Auth::USER_STATUS_UNACTIVATED) ->action( - function ($userId, $status) use ($response, $projectDB, $providers) { + function ($userId, $status) use ($response, $projectDB) { $user = $projectDB->getDocument($userId); if (empty($user->getId()) || Database::SYSTEM_COLLECTION_USERS != $user->getCollection()) { @@ -369,7 +370,7 @@ $utopia->patch('/v1/users/:userId/status') $oauth2Keys = []; - foreach ($providers as $key => $provider) { + foreach (Config::getParam('providers') as $key => $provider) { if (!$provider['enabled']) { continue; } @@ -400,7 +401,7 @@ $utopia->patch('/v1/users/:userId/prefs') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('prefs', '', function () { return new Assoc();}, 'Prefs key-value JSON object.') ->action( - function ($userId, $prefs) use ($response, $projectDB, $providers) { + function ($userId, $prefs) use ($response, $projectDB) { $user = $projectDB->getDocument($userId); if (empty($user->getId()) || Database::SYSTEM_COLLECTION_USERS != $user->getCollection()) { diff --git a/app/controllers/shared/web.php b/app/controllers/shared/web.php index e2ef34104f..9f148817a2 100644 --- a/app/controllers/shared/web.php +++ b/app/controllers/shared/web.php @@ -1,10 +1,9 @@ getQuery('version', ''))) { $layout ->setParam('title', APP_NAME) - ->setParam('protocol', $protocol) + ->setParam('protocol', Config::getParam('protocol')) ->setParam('domain', $domain) ->setParam('home', $request->getServer('_APP_HOME')) ->setParam('setup', $request->getServer('_APP_SETUP')) @@ -32,9 +31,9 @@ $layout ->setParam('env', $utopia->getEnv()) ; -$utopia->shutdown(function () use ($utopia, $response, $request, $layout, $version, $env) { +$utopia->shutdown(function () use ($utopia, $response, $request, $layout) { $time = (60 * 60 * 24 * 45); // 45 days cache - $isDev = (\Utopia\App::ENV_TYPE_DEVELOPMENT == $env); + $isDev = (\Utopia\App::ENV_TYPE_DEVELOPMENT == Config::getParam('env')); $response ->addHeader('Cache-Control', 'public, max-age='.$time) @@ -44,7 +43,7 @@ $utopia->shutdown(function () use ($utopia, $response, $request, $layout, $versi $route = $utopia->match($request); $scope = $route->getLabel('scope', ''); $layout - ->setParam('version', $version) + ->setParam('version', Config::getParam('version')) ->setParam('isDev', $isDev) ->setParam('class', $scope) ; diff --git a/app/controllers/web/console.php b/app/controllers/web/console.php index 4a7f2c8002..8aea506642 100644 --- a/app/controllers/web/console.php +++ b/app/controllers/web/console.php @@ -2,9 +2,10 @@ include_once __DIR__ . '/../shared/web.php'; -global $utopia, $response, $request, $layout, $version, $providers, $projectDB; +global $utopia, $response, $request, $layout, $projectDB; use Utopia\View; +use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Database\Database; use Appwrite\Database\Validator\UID; @@ -16,25 +17,18 @@ $utopia->init(function () use ($layout, $utopia) { ; }); -$utopia->shutdown(function () use ($utopia, $response, $request, $layout, $version) { +$utopia->shutdown(function () use ($response, $request, $layout) { $header = new View(__DIR__.'/../../views/console/comps/header.phtml'); $footer = new View(__DIR__.'/../../views/console/comps/footer.phtml'); $footer ->setParam('home', $request->getServer('_APP_HOME', '')) - ->setParam('version', $version) + ->setParam('version', Config::getParam('version')) ; $layout ->setParam('header', [$header]) ->setParam('footer', [$footer]) - ->setParam('prefetch', [ - //'/console/database?version=' . $version, - //'/console/storage?version=' . $version, - //'/console/users?version=' . $version, - //'/console/settings?version=' . $version, - //'/console/account?version=' . $version, - ]) ; $response->send($layout->render()); @@ -228,10 +222,10 @@ $utopia->get('/console/users') ->desc('Platform console project settings') ->label('permission', 'public') ->label('scope', 'console') - ->action(function () use ($layout, $providers) { + ->action(function () use ($layout) { $page = new View(__DIR__.'/../../views/console/users/index.phtml'); - $page->setParam('providers', $providers); + $page->setParam('providers', Config::getParam('providers')); $layout ->setParam('title', APP_NAME.' - Users') @@ -242,7 +236,7 @@ $utopia->get('/console/users/view') ->desc('Platform console project user') ->label('permission', 'public') ->label('scope', 'console') - ->action(function () use ($layout, $providers) { + ->action(function () use ($layout) { $page = new View(__DIR__.'/../../views/console/users/view.phtml'); $layout diff --git a/app/controllers/web/home.php b/app/controllers/web/home.php index 1a758aac26..c53fff8870 100644 --- a/app/controllers/web/home.php +++ b/app/controllers/web/home.php @@ -2,22 +2,23 @@ include_once __DIR__ . '/../shared/web.php'; -global $utopia, $response, $request, $layout, $version, $providers, $platforms; +global $utopia, $response, $request, $layout; use Utopia\View; +use Utopia\Config\Config; $header = new View(__DIR__.'/../../views/home/comps/header.phtml'); $footer = new View(__DIR__.'/../../views/home/comps/footer.phtml'); $footer - ->setParam('version', $version) + ->setParam('version', Config::getParam('version')) ; $layout ->setParam('title', APP_NAME) ->setParam('description', '') ->setParam('class', 'home') - ->setParam('platforms', $platforms) + ->setParam('platforms', Config::getParam('platforms')) ->setParam('header', [$header]) ->setParam('footer', [$footer]) ; diff --git a/app/init.php b/app/init.php index af72573942..18c57d88e5 100644 --- a/app/init.php +++ b/app/init.php @@ -14,6 +14,7 @@ if (file_exists(__DIR__.'/../vendor/autoload.php')) { use Utopia\App; use Utopia\Request; use Utopia\Response; +use Utopia\Config\Config; use Utopia\Locale\Locale; use Utopia\Registry\Registry; use Appwrite\Auth\Auth; @@ -52,30 +53,31 @@ $response = new Response(); /* * ENV vars */ -$env = $request->getServer('_APP_ENV', App::ENV_TYPE_PRODUCTION); -$domain = $request->getServer('HTTP_HOST', ''); -$domainVerification = false; -$version = $request->getServer('_APP_VERSION', 'UNKNOWN'); -$providers = include __DIR__.'/../app/config/providers.php'; // OAuth2 providers list -$platforms = include __DIR__.'/../app/config/platforms.php'; -$locales = include __DIR__.'/../app/config/locales.php'; // Locales list -$collections = include __DIR__.'/../app/config/collections.php'; // Collections list -$redisHost = $request->getServer('_APP_REDIS_HOST', ''); -$redisPort = $request->getServer('_APP_REDIS_PORT', ''); -$utopia = new App('Asia/Tel_Aviv', $env); -$protocol = $request->getServer('HTTP_X_FORWARDED_PROTO', $request->getServer('REQUEST_SCHEME', 'https')); -$port = (string) parse_url($protocol.'://'.$request->getServer('HTTP_HOST', ''), PHP_URL_PORT); +Config::load('providers', __DIR__.'/../app/config/providers.php'); +Config::load('platforms', __DIR__.'/../app/config/platforms.php'); +Config::load('locales', __DIR__.'/../app/config/locales.php'); +Config::load('collections', __DIR__.'/../app/config/collections.php'); -Resque::setBackend($redisHost.':'.$redisPort); +Config::setParam('env', $request->getServer('_APP_ENV', App::ENV_TYPE_PRODUCTION)); +Config::setParam('domain', $request->getServer('HTTP_HOST', '')); +Config::setParam('domainVerification', false); +Config::setParam('version', $request->getServer('_APP_VERSION', 'UNKNOWN')); +Config::setParam('protocol', $request->getServer('HTTP_X_FORWARDED_PROTO', $request->getServer('REQUEST_SCHEME', 'https'))); +Config::setParam('port', (string) parse_url(Config::getParam('protocol').'://'.$request->getServer('HTTP_HOST', ''), PHP_URL_PORT)); + +$utopia = new App('Asia/Tel_Aviv', Config::getParam('env')); + +Resque::setBackend($request->getServer('_APP_REDIS_HOST', '') + .':'.$request->getServer('_APP_REDIS_PORT', '')); define('COOKIE_DOMAIN', ( $request->getServer('HTTP_HOST', null) === 'localhost' || - $request->getServer('HTTP_HOST', null) === 'localhost:'.$port || + $request->getServer('HTTP_HOST', null) === 'localhost:'.Config::getParam('port') || (filter_var($request->getServer('HTTP_HOST', null), FILTER_VALIDATE_IP) !== false) ) ? null - : '.'.parse_url($protocol.'://'.$request->getServer('HTTP_HOST', ''), PHP_URL_HOST)); + : '.'.parse_url(Config::getParam('protocol').'://'.$request->getServer('HTTP_HOST', ''), PHP_URL_HOST)); define('COOKIE_SAMESITE', Response::COOKIE_SAMESITE_NONE); /* @@ -119,10 +121,11 @@ $register->set('statsd', function () use ($request) { // Register DB connection return $statsd; }); -$register->set('cache', function () use ($redisHost, $redisPort) { // Register cache connection +$register->set('cache', function () use ($request) { // Register cache connection $redis = new Redis(); - $redis->connect($redisHost, $redisPort); + $redis->connect($request->getServer('_APP_REDIS_HOST', ''), + $request->getServer('_APP_REDIS_PORT', '')); return $redis; }); @@ -209,7 +212,7 @@ Locale::setLanguage('zh-tw', include __DIR__.'/config/locales/zh-tw.php'); Locale::setDefault('en'); -if (in_array($locale, $locales)) { +if (in_array($locale, Config::getParam('locales'))) { Locale::setDefault($locale); } @@ -217,7 +220,7 @@ stream_context_set_default([ // Set global user agent and http settings 'http' => [ 'method' => 'GET', 'user_agent' => sprintf(APP_USERAGENT, - $version, + Config::getParam('version'), $request->getServer('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY)), 'timeout' => 2, ], @@ -229,8 +232,8 @@ stream_context_set_default([ // Set global user agent and http settings $consoleDB = new Database(); $consoleDB->setAdapter(new RedisAdapter(new MySQLAdapter($register), $register)); $consoleDB->setNamespace('app_console'); // Should be replaced with param if we want to have parent projects -$consoleDB->setMocks($collections); +$consoleDB->setMocks(Config::getParam('collections', [])); Authorization::disable(); $project = $consoleDB->getDocument($request->getParam('project', $request->getHeader('X-Appwrite-Project', null))); @@ -268,7 +271,7 @@ Auth::$secret = $session['secret']; $projectDB = new Database(); $projectDB->setAdapter(new RedisAdapter(new MySQLAdapter($register), $register)); $projectDB->setNamespace('app_'.$project->getId()); -$projectDB->setMocks($collections); +$projectDB->setMocks(Config::getParam('collections', [])); $user = $projectDB->getDocument(Auth::$unique); diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index c768bf48ca..334e92a934 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -4,6 +4,7 @@ require_once __DIR__.'/../../vendor/autoload.php'; require_once __DIR__.'/../../app/init.php'; +use Utopia\Config\Config; use Utopia\CLI\CLI; use Utopia\CLI\Console; use Appwrite\Spec\Swagger2; @@ -39,7 +40,7 @@ $cli return $result; } - $platforms = include __DIR__ . '/../config/platforms.php'; + $platforms = Config::getParam('platforms'); $message = Console::confirm('Please enter your commit message:'); $production = (Console::confirm('Type "Appwrite" to deploy for production') == 'Appwrite'); diff --git a/app/tasks/upgrade.php b/app/tasks/upgrade.php index 80c3b96b9b..c2a8723f99 100644 --- a/app/tasks/upgrade.php +++ b/app/tasks/upgrade.php @@ -3,8 +3,9 @@ require_once __DIR__.'/../init.php'; -global $register, $projectDB, $console, $providers, $request; +global $register, $projectDB, $console, $request; +use Utopia\Config\Config; use Utopia\CLI\CLI; use Utopia\CLI\Console; use Appwrite\Database\Database; @@ -93,7 +94,7 @@ $callbacks = [ ]; function fixDocument(Document $document) { - global $providers; + $providers = Config::getParam('providers'); if($document->getAttribute('$collection') === Database::SYSTEM_COLLECTION_PROJECTS){ foreach($providers as $key => $provider) { diff --git a/app/workers/certificates.php b/app/workers/certificates.php index c087a59e34..73a59ca17a 100644 --- a/app/workers/certificates.php +++ b/app/workers/certificates.php @@ -1,6 +1,7 @@ getServer('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY) )); curl_setopt( diff --git a/app/workers/usage.php b/app/workers/usage.php index 18e7d50422..e5f6733611 100644 --- a/app/workers/usage.php +++ b/app/workers/usage.php @@ -1,5 +1,7 @@ args['projectId']; $method = $this->args['method']; @@ -29,7 +31,7 @@ class UsageV1 $statsd = $register->get('statsd', true); - $tags = ",project={$projectId},version=".$version.''; + $tags = ",project={$projectId},version=".Config::getParam('version').''; // the global namespace is prepended to every key (optional) $statsd->setNamespace('appwrite.usage'); diff --git a/app/workers/webhooks.php b/app/workers/webhooks.php index 1eb0ec7289..e7c6157a8f 100644 --- a/app/workers/webhooks.php +++ b/app/workers/webhooks.php @@ -6,6 +6,7 @@ cli_set_process_title('Webhooks V1 Worker'); echo APP_NAME.' webhooks worker v1 has started'; +use Utopia\Config\Config; use Appwrite\Database\Database; use Appwrite\Database\Validator\Authorization; @@ -19,7 +20,7 @@ class WebhooksV1 public function perform() { - global $consoleDB, $version, $request; + global $consoleDB, $request; $errors = []; @@ -59,7 +60,7 @@ class WebhooksV1 curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, sprintf(APP_USERAGENT, - $version, + Config::getParam('version'), $request->getServer('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY) )); curl_setopt( diff --git a/composer.json b/composer.json index 4adc670cfe..5b158063e7 100644 --- a/composer.json +++ b/composer.json @@ -37,6 +37,7 @@ "utopia-php/audit": "0.2.*", "utopia-php/cache": "0.2.*", "utopia-php/cli": "0.4.*", + "utopia-php/config": "0.2.*", "utopia-php/locale": "0.2.*", "utopia-php/registry": "0.2.*", "utopia-php/domains": "0.2.*", diff --git a/composer.lock b/composer.lock index 313eb984af..62b26899d7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "54701e5067d9b94ae765f3f0e560b531", + "content-hash": "d19ba7d1c39970839f6f191664e9498d", "packages": [ { "name": "appwrite/php-clamav", @@ -1381,6 +1381,52 @@ ], "time": "2020-03-25T04:46:43+00:00" }, + { + "name": "utopia-php/config", + "version": "0.2.0", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/config.git", + "reference": "f1f41d3863eb00bd2837b45c2e17e8b5da1cf46d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/config/zipball/f1f41d3863eb00bd2837b45c2e17e8b5da1cf46d", + "reference": "f1f41d3863eb00bd2837b45c2e17e8b5da1cf46d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\Config\\": "src/Config" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eldad Fux", + "email": "eldad@appwrite.io" + } + ], + "description": "A simple Config library to managing application config variables", + "keywords": [ + "config", + "framework", + "php", + "upf", + "utopia" + ], + "time": "2020-03-28T10:24:18+00:00" + }, { "name": "utopia-php/domains", "version": "0.2.0", @@ -1576,7 +1622,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "7a43413e650705843672ebe930fe6ecd77693393" + "reference": "97cb12c9c187a42a545060c324b0960c99582893" }, "require": { "ext-curl": "*", @@ -1606,7 +1652,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2020-03-01T12:19:20+00:00" + "time": "2020-03-27T15:12:28+00:00" }, { "name": "doctrine/instantiator", @@ -2395,16 +2441,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "7.5.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "6ef9ac810e494e7793013f8f5004d5d268852412" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6ef9ac810e494e7793013f8f5004d5d268852412", + "reference": "6ef9ac810e494e7793013f8f5004d5d268852412", "shasum": "" }, "require": { @@ -2475,7 +2521,7 @@ "testing", "xunit" ], - "time": "2020-01-08T08:45:45+00:00" + "time": "2019-11-27T08:45:03+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3206,12 +3252,12 @@ "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "27af7d9cd1b77fcb13b4ed452c291d9defad088b" + "reference": "6df2e2c3181e6d0b961fc341fbe8269fefc933c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/27af7d9cd1b77fcb13b4ed452c291d9defad088b", - "reference": "27af7d9cd1b77fcb13b4ed452c291d9defad088b", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/6df2e2c3181e6d0b961fc341fbe8269fefc933c6", + "reference": "6df2e2c3181e6d0b961fc341fbe8269fefc933c6", "shasum": "" }, "require": { @@ -3263,7 +3309,7 @@ "keywords": [ "templating" ], - "time": "2020-03-24T12:35:30+00:00" + "time": "2020-03-27T16:41:01+00:00" }, { "name": "webmozart/assert", diff --git a/docker-compose.yml b/docker-compose.yml index 6bb22a3036..14ffa887ab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -148,18 +148,18 @@ services: # ports: # - "8081:8081" - # resque: - # image: registry.gitlab.com/appwrite/appwrite/resque-web:v1.0.2 - # restart: unless-stopped - # networks: - # - appwrite - # ports: - # - "5678:5678" - # environment: - # - RESQUE_WEB_HOST=redis - # - RESQUE_WEB_PORT=6379 - # - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user - # - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password + resque: + image: registry.gitlab.com/appwrite/appwrite/resque-web:v1.0.2 + restart: unless-stopped + networks: + - appwrite + ports: + - "5678:5678" + environment: + - RESQUE_WEB_HOST=redis + - RESQUE_WEB_PORT=6379 + - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user + - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password maildev: image: djfarrelly/maildev From cdcb1bda5e785cb090da84c692f2ca78d61f6644 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Sat, 28 Mar 2020 15:47:39 +0300 Subject: [PATCH 4/6] Updated compose --- docker-compose.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 14ffa887ab..6bb22a3036 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -148,18 +148,18 @@ services: # ports: # - "8081:8081" - resque: - image: registry.gitlab.com/appwrite/appwrite/resque-web:v1.0.2 - restart: unless-stopped - networks: - - appwrite - ports: - - "5678:5678" - environment: - - RESQUE_WEB_HOST=redis - - RESQUE_WEB_PORT=6379 - - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user - - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password + # resque: + # image: registry.gitlab.com/appwrite/appwrite/resque-web:v1.0.2 + # restart: unless-stopped + # networks: + # - appwrite + # ports: + # - "5678:5678" + # environment: + # - RESQUE_WEB_HOST=redis + # - RESQUE_WEB_PORT=6379 + # - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user + # - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password maildev: image: djfarrelly/maildev From 2a2f6c14925ec52e47e22ee81ee615e8dbf414e9 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Sat, 28 Mar 2020 18:11:58 +0300 Subject: [PATCH 5/6] Fixed SDK params --- app/app.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/app.php b/app/app.php index 16f8421a7c..ad2dbe5dfc 100644 --- a/app/app.php +++ b/app/app.php @@ -401,12 +401,6 @@ $utopia->get('/.well-known/acme-challenge') } ); - - - - - - $name = APP_NAME; if (array_key_exists($service, $services)) { /** @noinspection PhpIncludeInspection */ From 6937f751f6624cb46452d57a638a4423bbf79c0e Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Sat, 28 Mar 2020 18:12:34 +0300 Subject: [PATCH 6/6] Fixed SDK params --- app/views/home/auth/recovery/reset.phtml | 4 ++-- public/dist/scripts/app-all.js | 10 +++++----- public/dist/scripts/app-dep.js | 10 +++++----- public/scripts/dependencies/appwrite.js | 22 +++++++++++----------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/views/home/auth/recovery/reset.phtml b/app/views/home/auth/recovery/reset.phtml index 2ee1e23954..581447ec10 100644 --- a/app/views/home/auth/recovery/reset.phtml +++ b/app/views/home/auth/recovery/reset.phtml @@ -26,10 +26,10 @@ - + - + diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 494635e7bd..02ece05fc5 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -40,14 +40,14 @@ return http.patch(path,{'content-type':'application/json',},payload);},createRec if(url===undefined){throw new Error('Missing required parameter: "url"');} let path='/account/recovery';let payload={};if(email){payload['email']=email;} if(url){payload['url']=url;} -return http.post(path,{'content-type':'application/json',},payload);},updateRecovery:function(userId,secret,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +return http.post(path,{'content-type':'application/json',},payload);},updateRecovery:function(userId,secret,password,passwordAgain){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(secret===undefined){throw new Error('Missing required parameter: "secret"');} -if(passwordA===undefined){throw new Error('Missing required parameter: "passwordA"');} -if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} +if(password===undefined){throw new Error('Missing required parameter: "password"');} +if(passwordAgain===undefined){throw new Error('Missing required parameter: "passwordAgain"');} let path='/account/recovery';let payload={};if(userId){payload['userId']=userId;} if(secret){payload['secret']=secret;} -if(passwordA){payload['password']=passwordA;} -if(passwordB){payload['passwordAgain']=passwordB;} +if(password){payload['password']=password;} +if(passwordAgain){payload['passwordAgain']=passwordAgain;} return http.put(path,{'content-type':'application/json',},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json',},payload);},createSession:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} let path='/account/sessions';let payload={};if(email){payload['email']=email;} diff --git a/public/dist/scripts/app-dep.js b/public/dist/scripts/app-dep.js index 7527847e82..415984bee6 100644 --- a/public/dist/scripts/app-dep.js +++ b/public/dist/scripts/app-dep.js @@ -40,14 +40,14 @@ return http.patch(path,{'content-type':'application/json',},payload);},createRec if(url===undefined){throw new Error('Missing required parameter: "url"');} let path='/account/recovery';let payload={};if(email){payload['email']=email;} if(url){payload['url']=url;} -return http.post(path,{'content-type':'application/json',},payload);},updateRecovery:function(userId,secret,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +return http.post(path,{'content-type':'application/json',},payload);},updateRecovery:function(userId,secret,password,passwordAgain){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(secret===undefined){throw new Error('Missing required parameter: "secret"');} -if(passwordA===undefined){throw new Error('Missing required parameter: "passwordA"');} -if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} +if(password===undefined){throw new Error('Missing required parameter: "password"');} +if(passwordAgain===undefined){throw new Error('Missing required parameter: "passwordAgain"');} let path='/account/recovery';let payload={};if(userId){payload['userId']=userId;} if(secret){payload['secret']=secret;} -if(passwordA){payload['password']=passwordA;} -if(passwordB){payload['passwordAgain']=passwordB;} +if(password){payload['password']=password;} +if(passwordAgain){payload['passwordAgain']=passwordAgain;} return http.put(path,{'content-type':'application/json',},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json',},payload);},createSession:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} let path='/account/sessions';let payload={};if(email){payload['email']=email;} diff --git a/public/scripts/dependencies/appwrite.js b/public/scripts/dependencies/appwrite.js index ecea758163..c0b210dad9 100644 --- a/public/scripts/dependencies/appwrite.js +++ b/public/scripts/dependencies/appwrite.js @@ -630,12 +630,12 @@ * * @param {string} userId * @param {string} secret - * @param {string} passwordA - * @param {string} passwordB + * @param {string} password + * @param {string} passwordAgain * @throws {Error} * @return {Promise} */ - updateRecovery: function(userId, secret, passwordA, passwordB) { + updateRecovery: function(userId, secret, password, passwordAgain) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } @@ -644,12 +644,12 @@ throw new Error('Missing required parameter: "secret"'); } - if(passwordA === undefined) { - throw new Error('Missing required parameter: "passwordA"'); + if(password === undefined) { + throw new Error('Missing required parameter: "password"'); } - if(passwordB === undefined) { - throw new Error('Missing required parameter: "passwordB"'); + if(passwordAgain === undefined) { + throw new Error('Missing required parameter: "passwordAgain"'); } let path = '/account/recovery'; @@ -664,12 +664,12 @@ payload['secret'] = secret; } - if(passwordA) { - payload['password'] = passwordA; + if(password) { + payload['password'] = password; } - if(passwordB) { - payload['passwordAgain'] = passwordB; + if(passwordAgain) { + payload['passwordAgain'] = passwordAgain; } return http