Skip to content

Commit 7e095ac

Browse files
added get user method to the Authorization
1 parent f3ceba6 commit 7e095ac

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

src/Database/Validator/Authorization.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Utopia\Database\Validator;
44

5+
use Utopia\Database\Helpers\Role;
56
use Utopia\Validator;
67

78
class Authorization extends Validator
@@ -23,6 +24,11 @@ class Authorization extends Validator
2324
*/
2425
protected string $message = 'Authorization Error';
2526

27+
/**
28+
* @var string|null
29+
*/
30+
protected static ?string $user = null;
31+
2632
/**
2733
* @param string $action
2834
*/
@@ -82,6 +88,10 @@ public function isValid($permissions): bool
8288
*/
8389
public static function setRole(string $role): void
8490
{
91+
$userIdetifier = Role::parse($role)->getIdentifier();
92+
if ($userIdetifier) {
93+
self::$user = $userIdetifier;
94+
}
8595
self::$roles[$role] = true;
8696
}
8797

@@ -92,9 +102,23 @@ public static function setRole(string $role): void
92102
*/
93103
public static function unsetRole(string $role): void
94104
{
105+
$userIdetifier = Role::parse($role)->getIdentifier();
106+
if ($userIdetifier && self::$user == $userIdetifier) {
107+
self::$user = null;
108+
}
95109
unset(self::$roles[$role]);
96110
}
97111

112+
/**
113+
* Get current user
114+
*
115+
* @return string|null
116+
*/
117+
public static function getUser(): string|null
118+
{
119+
return self::$user;
120+
}
121+
98122
/**
99123
* @return array<string>
100124
*/

tests/unit/Validator/AuthorizationTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,24 @@ public function testNestedSkips(): void
119119

120120
$this->assertEquals(true, Authorization::$status);
121121
}
122+
123+
public function testSetUserFromRoles(): void
124+
{
125+
$currentUserRole = Role::user("123");
126+
Authorization::setRole(Role::user("123")->toString());
127+
$this->assertEquals($currentUserRole->getIdentifier(), Authorization::getUser());
128+
129+
$roles = [];
130+
$roles[] = Role::user("123");
131+
$roles[] = Role::user("123", 'verififed');
132+
$roles[] = Role::user("126", 'unverififed');
133+
$roles[] = Role::any();
134+
$roles[] = Role::users();
135+
136+
foreach ($roles as $role) {
137+
Authorization::setRole($role->toString());
138+
}
139+
$expectedRole = Role::user("126", 'unverififed');
140+
$this->assertEquals($expectedRole->getIdentifier(), Authorization::getUser());
141+
}
122142
}

0 commit comments

Comments
 (0)