diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 6fd97fefa1..1f62cecfae 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -59,7 +59,6 @@ use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; use Utopia\Validator\Boolean; use Utopia\Validator\Text; -use Utopia\Validator\WhiteList; App::post('/v1/teams') ->desc('Create team') diff --git a/src/Appwrite/Auth/Validator/Role.php b/src/Appwrite/Auth/Validator/Role.php index 23a23dd2ee..6bff6bf0fa 100644 --- a/src/Appwrite/Auth/Validator/Role.php +++ b/src/Appwrite/Auth/Validator/Role.php @@ -77,9 +77,13 @@ class Role extends Validator return false; } - $role = DbRole::parse($value); - $valid = $role->getRole() === Roles::ROLE_PROJECT ? !empty($role->getIdentifier()) && \in_array($role->getDimension(), $this->roles) : \in_array($role->getRole(), $this->roles); + try { + $role = DbRole::parse($value); + $valid = $role->getRole() === Roles::ROLE_PROJECT ? !empty($role->getIdentifier()) && \in_array($role->getDimension(), $this->roles) : \in_array($role->getRole(), $this->roles); + return $valid; + } catch (\Exception $e) { + return false; + } - return $valid; } -} \ No newline at end of file +} diff --git a/src/Appwrite/Utopia/Database/Documents/User.php b/src/Appwrite/Utopia/Database/Documents/User.php index 02cf7ca760..77482358c2 100644 --- a/src/Appwrite/Utopia/Database/Documents/User.php +++ b/src/Appwrite/Utopia/Database/Documents/User.php @@ -62,7 +62,7 @@ class User extends Document } foreach ($this->getAttribute('memberships', []) as $node) { - if (!isset($node['confirm']) || !$node['confirm'] || !isset($node['id']) || !isset($node['teamId'])) { + if (!isset($node['confirm']) || !$node['confirm'] || !isset($node['$id']) || !isset($node['teamId'])) { continue; } @@ -74,7 +74,7 @@ class User extends Document $roles = \array_merge($roles, $projectRoles); } else { $roles[] = Role::team($node['teamId'])->toString(); // Add base role for the team - $teamRoles = \array_map(fn ($role) => Role::team($node['teamId'], $role)->toString(), $node['roles'] ?? []); + $teamRoles = \array_map(fn ($role) => Role::team($node['teamId'], $role)->toString(), $node['roles'] ?? []); $roles = \array_merge($roles, $teamRoles); } } diff --git a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php index ffc57f4c3a..85409e4255 100644 --- a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php +++ b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php @@ -6,6 +6,8 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectConsole; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Role; class TeamsConsoleClientTest extends Scope {