This commit is contained in:
JaguarJack 2023-01-17 18:19:25 +08:00
parent ed10349317
commit e3dd4ee86c
4 changed files with 29 additions and 6 deletions

View File

@ -20,7 +20,6 @@ class RolesController extends Controller
) { ) {
} }
/** /**
* @return mixed * @return mixed
*/ */
@ -29,7 +28,7 @@ class RolesController extends Controller
return $this->model->setBeforeGetList(function ($query) { return $this->model->setBeforeGetList(function ($query) {
return $query->with(['permissions' => function ($query) { return $query->with(['permissions' => function ($query) {
$query->select('id'); $query->select('id');
}])->dataRange(); }]);
})->getList(); })->getList();
} }

View File

@ -1,8 +1,9 @@
<?php <?php
namespace Modules\Permissions\Providers; namespace Modules\Permissions;
use Catch\Support\Module\Installer as ModuleInstaller; use Catch\Support\Module\Installer as ModuleInstaller;
use Modules\Permissions\Providers\PermissionsServiceProvider;
class Installer extends ModuleInstaller class Installer extends ModuleInstaller
{ {

View File

@ -5,8 +5,8 @@ declare(strict_types=1);
namespace Modules\Permissions\Models; namespace Modules\Permissions\Models;
use Catch\Base\CatchModel as Model; use Catch\Base\CatchModel as Model;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Modules\Permissions\Models\Traits\DataRange;
/** /**
* @property $role_name * @property $role_name
@ -21,8 +21,6 @@ use Modules\Permissions\Models\Traits\DataRange;
*/ */
class Roles extends Model class Roles extends Model
{ {
use DataRange;
protected $table = 'roles'; protected $table = 'roles';
protected $fillable = ['id', 'role_name', 'identify', 'parent_id', 'description', 'data_range', 'creator_id', 'created_at', 'updated_at', 'deleted_at']; protected $fillable = ['id', 'role_name', 'identify', 'parent_id', 'description', 'data_range', 'creator_id', 'created_at', 'updated_at', 'deleted_at'];
@ -75,4 +73,22 @@ class Roles extends Model
{ {
return $this->belongsToMany(Departments::class, 'role_has_departments', 'role_id', 'department_id'); return $this->belongsToMany(Departments::class, 'role_has_departments', 'role_id', 'department_id');
} }
/**
* get role's permissions
* @return Collection
*/
public function getPermissions(): Collection
{
return $this->permissions()->get();
}
/**
* get role's departments
* @return Collection
*/
public function getDepartments(): Collection
{
return $this->departments()->get();
}
} }

View File

@ -7,6 +7,7 @@ use Catch\Support\Module\ModuleRepository;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;
use Modules\Permissions\Models\Permissions; use Modules\Permissions\Models\Permissions;
trait UserRelations trait UserRelations
@ -106,6 +107,12 @@ trait UserRelations
} }
}); });
if ($permission) {
[$module, $controller, $action] = explode('@', $permission);
$permission = CatchAdmin::getModuleControllerNamespace($module).$controller.'Controller@'.$action;
}
return $actions->contains($permission ?: Route::currentRouteAction()); return $actions->contains($permission ?: Route::currentRouteAction());
} }