mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Update permissions logic
This commit is contained in:
parent
2203403818
commit
3312e7ce12
@ -87,13 +87,15 @@ class ActivityController extends BaseController
|
||||
{
|
||||
$default_activities = $request->has('rows') ? $request->input('rows') : 50;
|
||||
|
||||
$activities = Activity::orderBy('created_at', 'DESC')->company()
|
||||
$activities = Activity::orderBy('created_at', 'DESC')
|
||||
->company()
|
||||
->take($default_activities);
|
||||
|
||||
if ($request->has('react')) {
|
||||
|
||||
if(!auth()->user()->isAdmin())
|
||||
return response()->json(['data' => []], 200);
|
||||
$activities->where('user_id', auth()->user()->id);
|
||||
// return response()->json(['data' => []], 200);
|
||||
|
||||
$system = ctrans('texts.system');
|
||||
|
||||
|
@ -358,18 +358,21 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
public function hasPermission($permission) : bool
|
||||
{
|
||||
$parts = explode('_', $permission);
|
||||
$all_permission = '';
|
||||
$all_permission = false;
|
||||
|
||||
if (count($parts) > 1) {
|
||||
$all_permission = $parts[0].'_all';
|
||||
}
|
||||
|
||||
//empty $all_permissions leads to stripos returning true;
|
||||
|
||||
return $this->isOwner() ||
|
||||
$this->isAdmin() ||
|
||||
(is_int(stripos($this->token()->cu->permissions, $all_permission))) ||
|
||||
(is_int(stripos($this->token()->cu->permissions, $permission)));
|
||||
(stripos($all_permission, $this->token()->cu->permissions) !== false) ||
|
||||
(stripos($permission, $this->token()->cu->permissions) !== false);
|
||||
|
||||
// return $this->isOwner() ||
|
||||
// $this->isAdmin() ||
|
||||
// (is_int(stripos($this->token()->cu->permissions, $all_permission))) ||
|
||||
// (is_int(stripos($this->token()->cu->permissions, $permission)));
|
||||
|
||||
}
|
||||
|
||||
|
@ -159,6 +159,40 @@ class PermissionsTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
public function testReturnTypesOfStripos()
|
||||
{
|
||||
|
||||
|
||||
$this->assertEquals(0, stripos("view_client", ''));
|
||||
|
||||
$all_permission = '[]';
|
||||
$this->assertFalse(stripos($all_permission, "view_client") !== false);
|
||||
$this->assertTrue(stripos($all_permission, "view_client") == 0);
|
||||
$this->assertFalse(is_int(stripos($all_permission, "view_client")));
|
||||
|
||||
$all_permission = ' ';
|
||||
$this->assertFalse(stripos($all_permission, "view_client") !== false);
|
||||
$this->assertFalse(is_int(stripos($all_permission, "view_client")));
|
||||
|
||||
$all_permission = "";//problems are empty strings
|
||||
$this->assertTrue(empty($all_permission));
|
||||
|
||||
$this->assertFalse( stripos($all_permission, "view_client") !== false);
|
||||
$this->assertFalse( is_int(stripos($all_permission, "view_client")));
|
||||
|
||||
$all_permission = 'view';//will always pass currently
|
||||
$this->assertFalse( stripos($all_permission, "view_client") !== false);
|
||||
$this->assertFalse(is_int(stripos($all_permission, "view_client")));
|
||||
|
||||
$all_permission = "view_client";
|
||||
$this->assertTrue(stripos($all_permission, "view_client") !== false);
|
||||
$this->assertTrue(is_int(stripos($all_permission, "view_client")) !== false);
|
||||
|
||||
$this->assertTrue(is_int(stripos($all_permission, "view_client")));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function testViewClientPermission()
|
||||
{
|
||||
|
||||
@ -166,8 +200,8 @@ class PermissionsTest extends TestCase
|
||||
$low_cu->permissions = '["view_client"]';
|
||||
$low_cu->save();
|
||||
|
||||
//this is aberrant
|
||||
$this->assertTrue($this->user->hasPermission("viewclient"));
|
||||
// this is aberrant
|
||||
$this->assertFalse($this->user->hasPermission("view____client"));
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user