This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
|||||||||||
2 | ||||||||||||
3 | namespace Mamikon\RoleManager\Commands; |
|||||||||||
4 | ||||||||||||
5 | use Illuminate\Console\Command; |
|||||||||||
6 | use Illuminate\Foundation\Auth\User; |
|||||||||||
7 | use Mamikon\RoleManager\Models\Permissions; |
|||||||||||
8 | use Mamikon\RoleManager\Models\Roles; |
|||||||||||
9 | ||||||||||||
10 | class RoleMangerCommand extends Command |
|||||||||||
11 | { |
|||||||||||
12 | /** |
|||||||||||
13 | * The name and signature of the console command. |
|||||||||||
14 | * |
|||||||||||
15 | * @var string |
|||||||||||
16 | */ |
|||||||||||
17 | protected $signature = 'permissions:migrate'; |
|||||||||||
18 | ||||||||||||
19 | /** |
|||||||||||
20 | * The console command description. |
|||||||||||
21 | * |
|||||||||||
22 | * @var string |
|||||||||||
23 | */ |
|||||||||||
24 | protected $description = 'Get Permissions And Roles from config, and add to db'; |
|||||||||||
25 | ||||||||||||
26 | /** |
|||||||||||
27 | * Create a new command instance. |
|||||||||||
28 | */ |
|||||||||||
29 | public function __construct() |
|||||||||||
30 | { |
|||||||||||
31 | parent::__construct(); |
|||||||||||
32 | } |
|||||||||||
33 | ||||||||||||
34 | /** |
|||||||||||
35 | * Execute the console command. |
|||||||||||
36 | * |
|||||||||||
37 | * @return void |
|||||||||||
38 | * |
|||||||||||
39 | * @throws \Exception |
|||||||||||
40 | */ |
|||||||||||
41 | public function handle() |
|||||||||||
42 | { |
|||||||||||
43 | $permissions = config('roleManager.permissions'); |
|||||||||||
44 | $roles = config('roleManager.roles'); |
|||||||||||
45 | foreach ($permissions as $permissionName => $permission) { |
|||||||||||
46 | ||||||||||||
47 | $permissionModel = new Permissions(); |
|||||||||||
48 | if (empty($permissionName)) { |
|||||||||||
49 | throw new \Exception('Permission Name Required'); |
|||||||||||
50 | } |
|||||||||||
51 | ||||||||||||
52 | if (!$permissionModel->where('name', $permissionName)->first()) { |
|||||||||||
0 ignored issues
–
show
|
||||||||||||
53 | ||||||||||||
54 | ||||||||||||
55 | $permissionModel->name = $permissionName; |
|||||||||||
0 ignored issues
–
show
The property
name does not exist on object<Mamikon\RoleManager\Models\Permissions> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
||||||||||||
56 | ||||||||||||
57 | if (isset($permission['description'])) { |
|||||||||||
58 | $permissionModel->description = $permission['description']; |
|||||||||||
0 ignored issues
–
show
The property
description does not exist on object<Mamikon\RoleManager\Models\Permissions> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
||||||||||||
59 | } |
|||||||||||
60 | if (isset($permission['class'])) { |
|||||||||||
61 | $permissionModel->class = $permission['class']; |
|||||||||||
0 ignored issues
–
show
The property
class does not exist on object<Mamikon\RoleManager\Models\Permissions> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
||||||||||||
62 | } |
|||||||||||
63 | if (isset($permission['method'])) { |
|||||||||||
64 | $permissionModel->method = $permission['method']; |
|||||||||||
0 ignored issues
–
show
The property
method does not seem to exist. Did you mean manyMethods ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
||||||||||||
65 | } |
|||||||||||
66 | $permissionModel->save(); |
|||||||||||
67 | } |
|||||||||||
68 | ||||||||||||
69 | } |
|||||||||||
70 | foreach ($roles as $roleName => $role) { |
|||||||||||
71 | $roleModel = new Roles(); |
|||||||||||
72 | if (empty($roleName)) { |
|||||||||||
73 | throw new \Exception('Role Name Required'); |
|||||||||||
74 | } |
|||||||||||
75 | if (!$roleModel->where('name', $roleName)->first()) { |
|||||||||||
0 ignored issues
–
show
The method
where does not exist on object<Mamikon\RoleManager\Models\Roles> ? Since you implemented __call , maybe consider adding a @method annotation.
If you implement This is often the case, when class ParentClass {
private $data = array();
public function __call($method, array $args) {
if (0 === strpos($method, 'get')) {
return $this->data[strtolower(substr($method, 3))];
}
throw new \LogicException(sprintf('Unsupported method: %s', $method));
}
}
/**
* If this class knows which fields exist, you can specify the methods here:
*
* @method string getName()
*/
class SomeClass extends ParentClass { }
![]() |
||||||||||||
76 | $roleModel->name = $roleName; |
|||||||||||
0 ignored issues
–
show
The property
name does not exist on object<Mamikon\RoleManager\Models\Roles> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
||||||||||||
77 | if (isset($role['description'])) { |
|||||||||||
78 | $roleModel->description = $role['description']; |
|||||||||||
0 ignored issues
–
show
The property
description does not exist on object<Mamikon\RoleManager\Models\Roles> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
||||||||||||
79 | } |
|||||||||||
80 | $roleModel->save(); |
|||||||||||
81 | } |
|||||||||||
82 | } |
|||||||||||
83 | ||||||||||||
84 | $defaultRoles = config('roleManager.assignPermissionsToRole'); |
|||||||||||
85 | foreach ($defaultRoles as $roleName => $permissionsList) { |
|||||||||||
86 | ||||||||||||
87 | $roleModel = Roles::where('name', $roleName) |
|||||||||||
88 | ->with('permissions')->first(); |
|||||||||||
89 | if ($roleModel) { |
|||||||||||
90 | ||||||||||||
91 | if ($permissionsList == '*') { |
|||||||||||
92 | View Code Duplication | foreach ($permissions as $permissionName => $permission) { |
||||||||||
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
||||||||||||
93 | $permissionModel = Permissions:: |
|||||||||||
94 | where('name', $permissionName) |
|||||||||||
95 | ->first(); |
|||||||||||
96 | if ($permissionModel) { |
|||||||||||
97 | $checker = $roleModel->permissions |
|||||||||||
98 | ->where('name', $permissionName)->first(); |
|||||||||||
99 | if (!$checker) { |
|||||||||||
100 | $roleModel->permissions()->attach($permissionModel); |
|||||||||||
101 | } |
|||||||||||
102 | } |
|||||||||||
103 | } |
|||||||||||
104 | ||||||||||||
105 | } elseif (is_array($permissionsList)) { |
|||||||||||
106 | View Code Duplication | foreach ($permissions as $permissionName) { |
||||||||||
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
||||||||||||
107 | ||||||||||||
108 | $permissionModel = Permissions:: |
|||||||||||
109 | where('name', $permissionName)->first(); |
|||||||||||
110 | ||||||||||||
111 | if ($permissionModel) { |
|||||||||||
112 | ||||||||||||
113 | $checker = $roleModel-> |
|||||||||||
114 | permissions->where('name', $permissionName)->first(); |
|||||||||||
115 | ||||||||||||
116 | if (!$checker) { |
|||||||||||
117 | $roleModel->permissions()->attach($permissionModel); |
|||||||||||
118 | } |
|||||||||||
119 | } |
|||||||||||
120 | } |
|||||||||||
121 | } |
|||||||||||
122 | } |
|||||||||||
123 | } |
|||||||||||
124 | ||||||||||||
125 | $userAssignments = config('roleManager.assignRoleToUser'); |
|||||||||||
126 | if (!empty($userAssignments) AND is_array($userAssignments)) { |
|||||||||||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Using logical operators such as
and instead of && is generally not recommended.
PHP has two types of connecting operators (logical operators, and boolean operators):
The difference between these is the order in which they are executed. In most cases,
you would want to use a boolean operator like Let’s take a look at a few examples: // Logical operators have lower precedence:
$f = false or true;
// is executed like this:
($f = false) or true;
// Boolean operators have higher precedence:
$f = false || true;
// is executed like this:
$f = (false || true);
Logical Operators are used for Control-FlowOne case where you explicitly want to use logical operators is for control-flow such as this: $x === 5
or die('$x must be 5.');
// Instead of
if ($x !== 5) {
die('$x must be 5.');
}
Since // The following is currently a parse error.
$x === 5
or throw new RuntimeException('$x must be 5.');
These limitations lead to logical operators rarely being of use in current PHP code. ![]() |
||||||||||||
127 | foreach ($userAssignments as $roleName => $userEmail) { |
|||||||||||
128 | $roleModel = Roles::where('name', $roleName)->first(); |
|||||||||||
129 | if ($user = User::where('email', $userEmail)->first() |
|||||||||||
130 | AND $roleModel |
|||||||||||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Using logical operators such as
and instead of && is generally not recommended.
PHP has two types of connecting operators (logical operators, and boolean operators):
The difference between these is the order in which they are executed. In most cases,
you would want to use a boolean operator like Let’s take a look at a few examples: // Logical operators have lower precedence:
$f = false or true;
// is executed like this:
($f = false) or true;
// Boolean operators have higher precedence:
$f = false || true;
// is executed like this:
$f = (false || true);
Logical Operators are used for Control-FlowOne case where you explicitly want to use logical operators is for control-flow such as this: $x === 5
or die('$x must be 5.');
// Instead of
if ($x !== 5) {
die('$x must be 5.');
}
Since // The following is currently a parse error.
$x === 5
or throw new RuntimeException('$x must be 5.');
These limitations lead to logical operators rarely being of use in current PHP code. ![]() |
||||||||||||
131 | AND !$roleModel->belongsToUser($user) |
|||||||||||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Using logical operators such as
and instead of && is generally not recommended.
PHP has two types of connecting operators (logical operators, and boolean operators):
The difference between these is the order in which they are executed. In most cases,
you would want to use a boolean operator like Let’s take a look at a few examples: // Logical operators have lower precedence:
$f = false or true;
// is executed like this:
($f = false) or true;
// Boolean operators have higher precedence:
$f = false || true;
// is executed like this:
$f = (false || true);
Logical Operators are used for Control-FlowOne case where you explicitly want to use logical operators is for control-flow such as this: $x === 5
or die('$x must be 5.');
// Instead of
if ($x !== 5) {
die('$x must be 5.');
}
Since // The following is currently a parse error.
$x === 5
or throw new RuntimeException('$x must be 5.');
These limitations lead to logical operators rarely being of use in current PHP code. ![]() |
||||||||||||
132 | ) { |
|||||||||||
133 | $roleModel->users()->attach($user); |
|||||||||||
134 | } |
|||||||||||
135 | } |
|||||||||||
136 | } |
|||||||||||
137 | echo "All permission Migrated Successfully"; |
|||||||||||
138 | } |
|||||||||||
139 | } |
|||||||||||
140 |
If you implement
__call
and you know which methods are available, you can improve IDE auto-completion and static analysis by adding a @method annotation to the class.This is often the case, when
__call
is implemented by a parent class and only the child class knows which methods exist: