diff --git a/config/catch.php b/config/catch.php index 3f633f8..1219ed7 100644 --- a/config/catch.php +++ b/config/catch.php @@ -59,7 +59,7 @@ return [ 'namespace' => 'Modules', - 'default' => ['develop', 'user'], + 'default' => ['develop', 'user', 'permission'], 'default_dirs' => [ 'Http'.DIRECTORY_SEPARATOR, @@ -82,7 +82,13 @@ return [ // use database driver 'table_name' => 'admin_modules' - ] + ], + + /** + * module routes collection + * + */ + 'routes' => [], ], /* @@ -117,19 +123,19 @@ return [ 'providers' => [ 'admin_users' => [ 'driver' => 'eloquent', - 'model' => \Modules\User\Models\Users::class + 'model' => \Modules\User\Models\User::class ] ] ], - /* + /* |-------------------------------------------------------------------------- | database sql log |-------------------------------------------------------------------------- */ 'listen_db_log' => true, - /* + /* |-------------------------------------------------------------------------- | route config |-------------------------------------------------------------------------- diff --git a/modules/Develop/Models/Schemas.php b/modules/Develop/Models/Schemas.php index 467512f..6aebc6c 100644 --- a/modules/Develop/Models/Schemas.php +++ b/modules/Develop/Models/Schemas.php @@ -24,11 +24,6 @@ class Schemas extends CatchModel 'id', 'module', 'name', 'columns', 'is_soft_delete', 'created_at', 'updated_at' ]; - /** - * @var bool - */ - protected bool $isPaginate = true; - /** * @var array|string[] */ diff --git a/modules/Develop/Support/Generate/stubs/model.stub b/modules/Develop/Support/Generate/stubs/model.stub index b9fe14d..beb912a 100644 --- a/modules/Develop/Support/Generate/stubs/model.stub +++ b/modules/Develop/Support/Generate/stubs/model.stub @@ -18,7 +18,7 @@ class {model} extends Model /** * @var array */ - protected array $fieldsInList = [{fieldsInList}]; + protected array $fields = [{fieldsInList}]; /** * @var array diff --git a/modules/Options/Repository/Components.php b/modules/Options/Repository/Components.php index 75ff606..415284d 100644 --- a/modules/Options/Repository/Components.php +++ b/modules/Options/Repository/Components.php @@ -1,9 +1,8 @@ get('module')) { - $components = File::glob(CatchAdmin::getModuleViewsPath($module) . '*/*.vue'); + $components = File::glob(CatchAdmin::getModuleViewsPath($module).'*/*.vue'); foreach ($components as $component) { $this->components[] = [ @@ -31,10 +30,8 @@ class Components implements OptionInterface 'value' => Str::of($component)->replace(CatchAdmin::moduleRootPath(), '')->prepend('/') ]; } - } return $this->components; } - } diff --git a/modules/Options/Repository/Controllers.php b/modules/Options/Repository/Controllers.php index 979159d..5f828aa 100644 --- a/modules/Options/Repository/Controllers.php +++ b/modules/Options/Repository/Controllers.php @@ -1,9 +1,8 @@ get('module')) { - $controllerFiles = File::glob(CatchAdmin::getModuleControllerPath($module) . '*.php'); + $controllerFiles = File::glob(CatchAdmin::getModuleControllerPath($module).'*.php'); foreach ($controllerFiles as $controllerFile) { $controllers[] = [ @@ -23,10 +22,8 @@ class Controllers implements OptionInterface 'value' => Str::of(File::name($controllerFile))->remove('Controller'), ]; } - } return $controllers; } - } diff --git a/modules/Permissions/Enums/MenuStatus.php b/modules/Permissions/Enums/MenuStatus.php new file mode 100644 index 0000000..eb12b29 --- /dev/null +++ b/modules/Permissions/Enums/MenuStatus.php @@ -0,0 +1,29 @@ + 1, + self::Hidden => 2, + }; + } + + public function name(): string + { + // TODO: Implement name() method. + return match ($this) { + self::Show => '显示', + self::Hidden => '隐藏', + }; + } +} diff --git a/modules/Permissions/Enums/MenuType.php b/modules/Permissions/Enums/MenuType.php new file mode 100644 index 0000000..93bc2a7 --- /dev/null +++ b/modules/Permissions/Enums/MenuType.php @@ -0,0 +1,32 @@ + 1, + self::Menu => 2, + self::Action => 3, + }; + } + + public function name(): string + { + // TODO: Implement name() method. + return match ($this) { + self::Top => '目录类型', + self::Menu => '菜单类型', + self::Action => '按钮类型', + }; + } +} diff --git a/modules/Permissions/Exceptions/PermissionForbidden.php b/modules/Permissions/Exceptions/PermissionForbidden.php new file mode 100644 index 0000000..91c8823 --- /dev/null +++ b/modules/Permissions/Exceptions/PermissionForbidden.php @@ -0,0 +1,13 @@ +model->disOrEnable($id); + return $this->model->toggleBy($id); } } diff --git a/modules/Permissions/Http/Controllers/JobsController.php b/modules/Permissions/Http/Controllers/JobsController.php index d408c69..2c44c8c 100644 --- a/modules/Permissions/Http/Controllers/JobsController.php +++ b/modules/Permissions/Http/Controllers/JobsController.php @@ -46,6 +46,6 @@ class JobsController extends Controller public function enable($id) { - return $this->model->disOrEnable($id); + return $this->model->toggleBy($id); } } diff --git a/modules/Permissions/Http/Controllers/PermissionsController.php b/modules/Permissions/Http/Controllers/PermissionsController.php index ad54b10..3412a3d 100644 --- a/modules/Permissions/Http/Controllers/PermissionsController.php +++ b/modules/Permissions/Http/Controllers/PermissionsController.php @@ -52,6 +52,6 @@ class PermissionsController extends Controller */ public function enable($id) { - return $this->model->disOrEnable($id, 'hidden'); + return $this->model->toggleBy($id, 'hidden'); } } diff --git a/modules/Permissions/Middlewares/PermissionGate.php b/modules/Permissions/Middlewares/PermissionGate.php new file mode 100644 index 0000000..89b8033 --- /dev/null +++ b/modules/Permissions/Middlewares/PermissionGate.php @@ -0,0 +1,26 @@ +isMethod('get')) { + return $next($request); + } + + /* @var User $user */ + $user = $request->user(getGuardName()); + + if (! $user->can()) { + throw new PermissionForbidden(); + } + + return $next($request); + } +} diff --git a/modules/Permissions/Models/DepartmentsModel.php b/modules/Permissions/Models/DepartmentsModel.php index 987bc15..63caece 100644 --- a/modules/Permissions/Models/DepartmentsModel.php +++ b/modules/Permissions/Models/DepartmentsModel.php @@ -26,10 +26,12 @@ class DepartmentsModel extends Model protected $fillable = ['id', 'parent_id', 'department_name', 'principal', 'mobile', 'email', 'status', 'sort', 'creator_id', 'created_at', 'updated_at', 'deleted_at']; + protected bool $isPaginate = false; + /** * @var array */ - protected array $fieldsInList = ['id','parent_id','department_name','status','sort','created_at']; + protected array $fields = ['id','parent_id','department_name','status','sort','created_at']; /** * @var array @@ -44,8 +46,5 @@ class DepartmentsModel extends Model 'status' => '=', ]; - public function getList(): mixed - { - return self::query()->select($this->fieldsInList)->quickSearch()->get()->toTree(); - } + protected bool $asTree = true; } diff --git a/modules/Permissions/Models/JobsModel.php b/modules/Permissions/Models/JobsModel.php index 1fe5045..eaa7c41 100644 --- a/modules/Permissions/Models/JobsModel.php +++ b/modules/Permissions/Models/JobsModel.php @@ -27,7 +27,7 @@ class JobsModel extends Model /** * @var array */ - protected array $fieldsInList = ['id','job_name','coding','status','sort','description','created_at','updated_at']; + protected array $fields = ['id','job_name','coding','status','sort','description','created_at','updated_at']; /** * @var array diff --git a/modules/Permissions/Models/PermissionsModel.php b/modules/Permissions/Models/PermissionsModel.php index f9e6a95..1c22f62 100644 --- a/modules/Permissions/Models/PermissionsModel.php +++ b/modules/Permissions/Models/PermissionsModel.php @@ -5,6 +5,9 @@ declare(strict_types=1); namespace Modules\Permissions\Models; use Catch\Base\CatchModel as Model; +use Catch\Enums\Status; +use Modules\Permissions\Enums\MenuStatus; +use Modules\Permissions\Enums\MenuType; /** * @property $id @@ -34,7 +37,9 @@ class PermissionsModel extends Model /** * @var array */ - protected array $fieldsInList = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','sort','created_at','updated_at']; + protected array $fields = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','sort','created_at','updated_at']; + + protected bool $isPaginate = false; /** * @var array @@ -48,13 +53,21 @@ class PermissionsModel extends Model 'permission_name' => 'like', ]; + /** - * @return mixed + * @var bool */ - public function getList(): mixed - { - return self::query()->select($this->fieldsInList)->quickSearch()->get()->toTree(); - } + protected bool $asTree = true; + + /** + * @var string[] + */ + protected $casts = [ + 'type' => MenuType::class, + + 'status' => MenuStatus::class + ]; + /** * is hidden @@ -63,6 +76,16 @@ class PermissionsModel extends Model */ public function isHidden(): bool { - return $this->hidden === 2; + return $this->hidden === Status::Disable; + } + + /** + * action type + * + * @return bool + */ + public function isAction(): bool + { + return $this->type == MenuType::Action; } } diff --git a/modules/Permissions/Models/RolesModel.php b/modules/Permissions/Models/RolesModel.php index d45b720..382ae93 100644 --- a/modules/Permissions/Models/RolesModel.php +++ b/modules/Permissions/Models/RolesModel.php @@ -26,13 +26,19 @@ class RolesModel extends Model /** * @var array */ - protected array $fieldsInList = ['id', 'role_name','identify','parent_id','description','data_range', 'created_at', 'updated_at']; + protected array $fields = ['id', 'role_name','identify','parent_id','description','data_range', 'created_at', 'updated_at']; /** * @var array */ protected array $form = ['role_name','identify','parent_id','description','data_range']; + + /** + * @var bool + */ + protected bool $isPaginate = false; + /** * @var array */ @@ -41,11 +47,5 @@ class RolesModel extends Model ]; - /** - * @return mixed - */ - public function getList(): mixed - { - return self::query()->select($this->fieldsInList)->quickSearch()->get()->toTree(); - } + protected bool $asTree = true; } diff --git a/modules/Permissions/Providers/PermissionsServiceProvider.php b/modules/Permissions/Providers/PermissionsServiceProvider.php index 0712f8b..6b509d3 100644 --- a/modules/Permissions/Providers/PermissionsServiceProvider.php +++ b/modules/Permissions/Providers/PermissionsServiceProvider.php @@ -4,9 +4,26 @@ namespace Modules\Permissions\Providers; use Catch\CatchAdmin; use Catch\Providers\CatchModuleServiceProvider; +use Modules\Permissions\Middlewares\PermissionGate; class PermissionsServiceProvider extends CatchModuleServiceProvider { + /** + * register permission gate + * + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + */ + + protected function registering() + { + $route = $this->app['config']->get('catch.route'); + + $route['middlewares'][] = PermissionGate::class; + + $this->app['config']->set('catch.route', $route); + } + /** * route path * diff --git a/modules/Permissions/database/migrations/2022_12_05_084442_create_roles.php b/modules/Permissions/database/migrations/2022_12_05_084442_create_roles.php index cd29f45..73f6246 100644 --- a/modules/Permissions/database/migrations/2022_12_05_084442_create_roles.php +++ b/modules/Permissions/database/migrations/2022_12_05_084442_create_roles.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * diff --git a/modules/Permissions/database/migrations/2022_12_06_110551_create_jobs.php b/modules/Permissions/database/migrations/2022_12_06_110551_create_jobs.php index f6100bf..44c2a69 100644 --- a/modules/Permissions/database/migrations/2022_12_06_110551_create_jobs.php +++ b/modules/Permissions/database/migrations/2022_12_06_110551_create_jobs.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * diff --git a/modules/Permissions/database/migrations/2022_12_07_075441_create_departments.php b/modules/Permissions/database/migrations/2022_12_07_075441_create_departments.php index 741c9fd..51d329a 100644 --- a/modules/Permissions/database/migrations/2022_12_07_075441_create_departments.php +++ b/modules/Permissions/database/migrations/2022_12_07_075441_create_departments.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * diff --git a/modules/Permissions/database/migrations/2022_12_10_061840_create_user_has_roles.php b/modules/Permissions/database/migrations/2022_12_10_061840_create_user_has_roles.php index bbff75a..ce2f327 100644 --- a/modules/Permissions/database/migrations/2022_12_10_061840_create_user_has_roles.php +++ b/modules/Permissions/database/migrations/2022_12_10_061840_create_user_has_roles.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * @@ -14,11 +13,11 @@ return new class extends Migration public function up(): void { Schema::create('user_has_roles', function (Blueprint $table) { - $table->integer('user_id')->comment('users primary key'); + $table->integer('user_id')->comment('users primary key'); - $table->integer('role_id')->comment('roles primary key'); + $table->integer('role_id')->comment('roles primary key'); - $table->comment('user relate roles'); + $table->comment('user relate roles'); }); } @@ -29,6 +28,5 @@ return new class extends Migration */ public function down(): void { - } }; diff --git a/modules/Permissions/database/migrations/2022_12_10_061857_create_role_has_permissions.php b/modules/Permissions/database/migrations/2022_12_10_061857_create_role_has_permissions.php index a769472..5a27854 100644 --- a/modules/Permissions/database/migrations/2022_12_10_061857_create_role_has_permissions.php +++ b/modules/Permissions/database/migrations/2022_12_10_061857_create_role_has_permissions.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * @@ -29,6 +28,5 @@ return new class extends Migration */ public function down(): void { - } }; diff --git a/modules/Permissions/database/migrations/2022_12_10_061919_create_user_has_jobs.php b/modules/Permissions/database/migrations/2022_12_10_061919_create_user_has_jobs.php index 5411e51..8baa962 100644 --- a/modules/Permissions/database/migrations/2022_12_10_061919_create_user_has_jobs.php +++ b/modules/Permissions/database/migrations/2022_12_10_061919_create_user_has_jobs.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * @@ -29,6 +28,5 @@ return new class extends Migration */ public function down(): void { - } }; diff --git a/modules/Permissions/database/migrations/2022_12_10_061928_create_role_has_departments.php b/modules/Permissions/database/migrations/2022_12_10_061928_create_role_has_departments.php index 595de82..494989d 100644 --- a/modules/Permissions/database/migrations/2022_12_10_061928_create_role_has_departments.php +++ b/modules/Permissions/database/migrations/2022_12_10_061928_create_role_has_departments.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. * @@ -29,6 +28,5 @@ return new class extends Migration */ public function down(): void { - } }; diff --git a/modules/Permissions/views/permissions/form/create.vue b/modules/Permissions/views/permissions/form/create.vue index c2d7eb2..59cd889 100644 --- a/modules/Permissions/views/permissions/form/create.vue +++ b/modules/Permissions/views/permissions/form/create.vue @@ -39,7 +39,7 @@ - @@ -82,11 +95,22 @@ if (props.primary) { const emit = defineEmits(['close']) const roles = ref() +const permissions = ref() onMounted(() => { http.get(props.api).then(r => { roles.value = r.data.data }) close(() => emit('close')) + + http.get('permissions/permissions').then(r => { + permissions.value = r.data.data + }) }) + + diff --git a/modules/User/Http/Controllers/UserController.php b/modules/User/Http/Controllers/UserController.php index 9d678e7..0ee8054 100644 --- a/modules/User/Http/Controllers/UserController.php +++ b/modules/User/Http/Controllers/UserController.php @@ -6,12 +6,12 @@ use Catch\Base\CatchController as Controller; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Http\Request; use Modules\User\Models\LogLogin; -use Modules\User\Models\Users; +use Modules\User\Models\User; class UserController extends Controller { public function __construct( - protected readonly Users $user + protected readonly User $user ) { } @@ -44,7 +44,18 @@ class UserController extends Controller */ public function show($id) { - return $this->user->firstBy($id)->makeHidden('password'); + return $this->user->setAfterFirstBy(function (User $user){ + $relations = array_keys($user->getRelations()); + if (in_array('roles', $relations)) { + $user->setRelations([ + 'roles' => $user->roles->pluck('id'), + + 'jobs' => $user->jobs->pluck('id') + ]); + } + + return $user; + })->firstBy($id)->makeHidden('password'); } /** @@ -78,7 +89,7 @@ class UserController extends Controller */ public function enable($id) { - return $this->user->disOrEnable($id); + return $this->user->toggleBy($id); } /** @@ -88,7 +99,7 @@ class UserController extends Controller */ public function online(Request $request) { - /* @var Users $user */ + /* @var User $user */ $user = $this->getLoginUser()->withPermissions(); if ($request->isMethod('post')) { diff --git a/modules/User/Listeners/Login.php b/modules/User/Listeners/Login.php index 92925b1..481f30f 100644 --- a/modules/User/Listeners/Login.php +++ b/modules/User/Listeners/Login.php @@ -9,7 +9,7 @@ use Illuminate\Support\Str; use Illuminate\Support\Stringable; use Modules\User\Events\Login as Event; use Modules\User\Models\LogLogin; -use Modules\User\Models\Users; +use Modules\User\Models\User; class Login { @@ -26,7 +26,7 @@ class Login $this->log($request, (bool) $event->token); if ($event->token) { - /* @var Users $user */ + /* @var User $user */ $user = Auth::guard(getGuardName())->user(); $user->login_ip = $request->ip(); diff --git a/modules/User/Models/Observers/UsersObserver.php b/modules/User/Models/Observers/UsersObserver.php new file mode 100644 index 0000000..f857213 --- /dev/null +++ b/modules/User/Models/Observers/UsersObserver.php @@ -0,0 +1,38 @@ +enabled('permissions')) { - $this->with = ['roles', 'jobs']; - } + $this->isPermissionModuleEnabled = app(ModuleRepository::class)->enabled('permissions'); + + if ($this->isPermissionModuleEnabled) { + $this->with = ['roles', 'jobs']; + } } /** @@ -56,11 +61,42 @@ trait UserRelations $permissions = []; } - $this->setAttribute('permissions', $permissions->each(fn($permission) => $permission->setAttribute('hidden', $permission->isHidden()))); + $this->setAttribute('permissions', $permissions->each(fn ($permission) => $permission->setAttribute('hidden', $permission->isHidden()))); return $this; } + /** + * + * permission module controller.action + * + * @param string|null $permission + * @return bool + */ + public function can(string $permission = null): bool + { + if (! $this->isPermissionModuleEnabled) { + return true; + } + + if ($this->isSuperAdmin()) { + return true; + } + + $this->withPermissions(); + + $actions = Collection::make(); + + $this->permissions->each(function ($permission) use (&$actions) { + if ($permission->isAction()) { + [$controller, $action] = explode('@', $permission->permission_mark); + + $actions->add(CatchAdmin::getModuleControllerNamespace($permission->module).$controller.'Controller@'.$action); + } + }); + + return $actions->contains($permission ?: Route::currentRouteAction()); + } /** * get RolesModel @@ -70,7 +106,7 @@ trait UserRelations */ protected function getRolesModel(): string { - return '\\' . CatchAdmin::getModuleModelNamespace('permissions') . 'RolesModel'; + return '\\'.CatchAdmin::getModuleModelNamespace('permissions').'RolesModel'; } @@ -82,7 +118,7 @@ trait UserRelations */ protected function getJobsModel(): string { - return '\\'. CatchAdmin::getModuleModelNamespace('permissions') . 'JobsModel'; + return '\\'.CatchAdmin::getModuleModelNamespace('permissions').'JobsModel'; } /** @@ -93,6 +129,6 @@ trait UserRelations */ protected function getPermissionsModel(): string { - return '\\'. CatchAdmin::getModuleModelNamespace('permissions') . 'PermissionsModel'; + return '\\'.CatchAdmin::getModuleModelNamespace('permissions').'PermissionsModel'; } } diff --git a/modules/User/Models/Users.php b/modules/User/Models/User.php similarity index 81% rename from modules/User/Models/Users.php rename to modules/User/Models/User.php index 0801d73..990a9da 100644 --- a/modules/User/Models/Users.php +++ b/modules/User/Models/User.php @@ -23,12 +23,12 @@ use Illuminate\Auth\Authenticatable; * @property int $updated_at * @property string $remember_token */ -class Users extends Model implements AuthenticatableContract, JWTSubject +class User extends Model implements AuthenticatableContract, JWTSubject { use Authenticatable, UserRelations; protected $fillable = [ - 'id', 'username', 'email', 'avatar', 'password', 'remember_token', 'creator_id', 'status', 'login_ip', 'login_at', 'created_at', 'updated_at', 'deleted_at' + 'id', 'username', 'email', 'avatar', 'password', 'remember_token', 'creator_id', 'status', 'department_id', 'login_ip', 'login_at', 'created_at', 'updated_at', 'deleted_at' ]; /** @@ -45,10 +45,17 @@ class Users extends Model implements AuthenticatableContract, JWTSubject */ protected $table = 'users'; + protected array $fields = ['id', 'username', 'email', 'avatar', 'creator_id', 'status', 'department_id', 'created_at']; + /** * @var array|string[] */ - protected array $form = ['username', 'email', 'password']; + protected array $form = ['username', 'email', 'password', 'department_id']; + + /** + * @var array|string[] + */ + protected array $formRelations = ['roles', 'jobs']; /** * diff --git a/modules/User/database/migrations/2022_12_04_060250_create_users.php b/modules/User/database/migrations/2022_12_04_060250_create_users.php index 902f34d..fd999b3 100644 --- a/modules/User/database/migrations/2022_12_04_060250_create_users.php +++ b/modules/User/database/migrations/2022_12_04_060250_create_users.php @@ -25,6 +25,8 @@ return new class () extends Migration { $table->string('remember_token', 1000)->nullable()->comment('token'); + $table->integer('department_id')->default(0)->comment('部门ID'); + $table->integer('creator_id')->default(0); $table->status(); diff --git a/modules/User/views/user/create.vue b/modules/User/views/user/create.vue index 9f2a8fd..306e137 100644 --- a/modules/User/views/user/create.vue +++ b/modules/User/views/user/create.vue @@ -33,6 +33,21 @@ + + + +
@@ -46,9 +61,6 @@
- - -
{{ $t('system.confirm') }}
@@ -59,8 +71,8 @@ import { useCreate } from '/admin/composables/curd/useCreate' import { useShow } from '/admin/composables/curd/useShow' -import { onMounted, watch, ref } from 'vue' -import http from '../../../../resources/admin/support/http' +import { onMounted, ref } from 'vue' +import http from '/admin/support/http' const props = defineProps({ primary: String | Number, @@ -91,20 +103,16 @@ const { formData, form, loading, submitForm, close } = useCreate(props.api, prop if (props.primary) { useShow(props.api, props.primary, formData) } + const emit = defineEmits(['close']) +close(() => emit('close')) const departments = ref() const jobs = ref() const roles = ref() onMounted(() => { - close(() => emit('close')) - if (props.hasRoles) { - http.get('permissions/roles').then(r => { - roles.value = r.data.data - }) - http.get('permissions/departments').then(r => { departments.value = r.data.data }) @@ -112,6 +120,10 @@ onMounted(() => { http.get('permissions/jobs').then(r => { jobs.value = r.data.data }) + + http.get('permissions/roles').then(r => { + roles.value = r.data.data + }) } }) diff --git a/modules/User/views/user/index.vue b/modules/User/views/user/index.vue index d88b52e..3735108 100644 --- a/modules/User/views/user/index.vue +++ b/modules/User/views/user/index.vue @@ -1,52 +1,52 @@