From 64b725a6f7f631a8897a4b6a1c9f6abda42bc65d Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 15 Nov 2022 10:19:35 +0000 Subject: [PATCH 1/4] Update Defaults --- app/controllers/api/projects.php | 2 +- src/Appwrite/Utopia/Response/Model/Project.php | 9 +++++---- .../e2e/Services/Projects/ProjectsConsoleClientTest.php | 9 +++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 65cfef04ac..80cf55fad3 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -81,7 +81,7 @@ App::post('/v1/projects') } $auth = Config::getParam('auth', []); - $auths = ['limit' => 0]; + $auths = ['limit' => 0, 'duration' => Auth::TOKEN_EXPIRATION_LOGIN_LONG]; foreach ($auth as $index => $method) { $auths[$method['key'] ?? ''] = true; } diff --git a/src/Appwrite/Utopia/Response/Model/Project.php b/src/Appwrite/Utopia/Response/Model/Project.php index a8b556193e..42f360d6ab 100644 --- a/src/Appwrite/Utopia/Response/Model/Project.php +++ b/src/Appwrite/Utopia/Response/Model/Project.php @@ -2,6 +2,7 @@ namespace Appwrite\Utopia\Response\Model; +use Appwrite\Auth\Auth; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Model; use Utopia\Config\Config; @@ -102,10 +103,10 @@ class Project extends Model 'example' => '131102020', ]) ->addRule('authDuration', [ - 'type' => self::TYPE_STRING, + 'type' => self::TYPE_INTEGER, 'description' => 'Session duration in seconds.', - 'default' => '', - 'example' => '30', + 'default' => Auth::TOKEN_EXPIRATION_LOGIN_LONG, + 'example' => 60, ]) ->addRule('authLimit', [ 'type' => self::TYPE_INTEGER, @@ -231,7 +232,7 @@ class Project extends Model $auth = Config::getParam('auth', []); $document->setAttribute('authLimit', $authValues['limit'] ?? 0); - $document->setAttribute('authDuration', $authValues['duration'] ?? 0); + $document->setAttribute('authDuration', $authValues['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG); foreach ($auth as $index => $method) { $key = $method['key']; diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index a9bfaa9650..3fd06f07e8 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -417,6 +417,15 @@ class ProjectsConsoleClientTest extends Scope { $id = $data['projectId']; + // Check defaults + $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => 'console', + ], $this->getHeaders())); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(Auth::TOKEN_EXPIRATION_LOGIN_LONG, $response['body']['authDuration']); // 1 Year + /** * Test for SUCCESS */ From a51288da5761c1a909a749f0236d4e7bb2df7868 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 15 Nov 2022 10:25:34 +0000 Subject: [PATCH 2/4] Update projects.php --- app/controllers/api/projects.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 80cf55fad3..d1dfea7245 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -522,7 +522,7 @@ App::patch('/v1/projects/:projectId/auth/duration') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_PROJECT) ->param('projectId', '', new UID(), 'Project unique ID.') - ->param('duration', 525600, new Range(0, 525600), 'Project session length in minutes. Max length: 525600 minutes.') + ->param('duration', 31536000, new Range(0, 31536000), 'Project session length in seconds. Max length: 31536000 seconds.') ->inject('response') ->inject('dbForConsole') ->action(function (string $projectId, int $duration, Response $response, Database $dbForConsole) { @@ -534,7 +534,7 @@ App::patch('/v1/projects/:projectId/auth/duration') } $auths = $project->getAttribute('auths', []); - $auths['duration'] = $duration * 60; + $auths['duration'] = $duration; $dbForConsole->updateDocument('projects', $project->getId(), $project ->setAttribute('auths', $auths)); From f0052cbd8ec99b4567d6c6b1c2ce817cd379c7c1 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 15 Nov 2022 10:31:32 +0000 Subject: [PATCH 3/4] Update Tests --- .../Projects/ProjectsConsoleClientTest.php | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 3fd06f07e8..3a09ce72a9 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -434,7 +434,7 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'duration' => '1', // Set session duration to 2 minutes + 'duration' => 60, // Set session duration to 2 minutes ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -484,8 +484,21 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); + // Check session doesn't expire too soon. + + sleep(30); + + // Get User + $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'Cookie' => $sessionCookie, + ])); + + $this->assertEquals(200, $response['headers']['status-code']); + // Wait just over a minute - sleep(65); + sleep(35); // Get User $response = $this->client->call(Client::METHOD_GET, '/account', array_merge([ @@ -501,7 +514,7 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'duration' => 525600, + 'duration' => Auth::TOKEN_EXPIRATION_LOGIN_LONG, ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -514,7 +527,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(31536000, $response['body']['authDuration']); // 1 Year + $this->assertEquals(Auth::TOKEN_EXPIRATION_LOGIN_LONG, $response['body']['authDuration']); // 1 Year return ['projectId' => $projectId]; } From f5a47019441bd1992b89b61ba84f8d0f60c1d890 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 15 Nov 2022 10:38:02 +0000 Subject: [PATCH 4/4] Run Linter --- tests/e2e/Services/Projects/ProjectsConsoleClientTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 3a09ce72a9..cd9f032d62 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -494,7 +494,7 @@ class ProjectsConsoleClientTest extends Scope 'x-appwrite-project' => $projectId, 'Cookie' => $sessionCookie, ])); - + $this->assertEquals(200, $response['headers']['status-code']); // Wait just over a minute