Skip to content

Commit dda5843

Browse files
authored
Fix API vs Web TeamsHasPermissions, add Tests (#89)
* Fix API vs Web permissions, add Tests * Fix style * Fix excess tab
1 parent eae4a8a commit dda5843

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/HasTeams.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ public function hasTeamPermission($team, string $permission)
154154
}
155155

156156
if (in_array(HasApiTokens::class, class_uses_recursive($this)) &&
157-
! $this->tokenCan($permission)) {
157+
! $this->tokenCan($permission) &&
158+
$this->currentAccessToken() !== null) {
158159
return false;
159160
}
160161

tests/TeamBehaviorTest.php

+26
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Laravel\Jetstream\Jetstream;
77
use Laravel\Jetstream\Team;
88
use Laravel\Jetstream\Tests\Fixtures\User;
9+
use Laravel\Sanctum\Sanctum;
910
use Laravel\Sanctum\TransientToken;
1011

1112
class TeamBehaviorTest extends OrchestraTestCase
@@ -54,6 +55,15 @@ public function test_team_relationship_methods()
5455
$otherUser->teams()->attach($team, ['role' => 'editor']);
5556
$otherUser = $otherUser->fresh();
5657

58+
$this->assertTrue($otherUser->belongsToTeam($team));
59+
$this->assertFalse($otherUser->ownsTeam($team));
60+
61+
$this->assertTrue($otherUser->hasTeamPermission($team, 'foo'));
62+
$this->assertFalse($otherUser->hasTeamPermission($team, 'bar'));
63+
64+
$this->assertTrue($team->userHasPermission($otherUser, 'foo'));
65+
$this->assertFalse($team->userHasPermission($otherUser, 'bar'));
66+
5767
$otherUser->withAccessToken(new TransientToken);
5868

5969
$this->assertTrue($otherUser->belongsToTeam($team));
@@ -88,9 +98,25 @@ public function test_has_team_permission_checks_token_permissions()
8898
'password' => 'secret',
8999
]);
90100

101+
$authToken = new Sanctum;
102+
$adam = $authToken->actingAs($adam, ['bar'], []);
103+
91104
$team->users()->attach($adam, ['role' => 'admin']);
92105

93106
$this->assertFalse($adam->hasTeamPermission($team, 'foo'));
107+
108+
$john = User::forceCreate([
109+
'name' => 'John Doe',
110+
'email' => '[email protected]',
111+
'password' => 'secret',
112+
]);
113+
114+
$authToken = new Sanctum;
115+
$john = $authToken->actingAs($john, ['foo'], []);
116+
117+
$team->users()->attach($john, ['role' => 'admin']);
118+
119+
$this->assertTrue($john->hasTeamPermission($team, 'foo'));
94120
}
95121

96122
protected function migrate()

0 commit comments

Comments
 (0)