128 lines
5.1 KiB
PHP
128 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Enums\UserEnum;
|
|
use Illuminate\Database\Seeder;
|
|
use App\Models\Permission;
|
|
use App\Models\User;
|
|
use Spatie\Permission\Models\Role;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class PermissionSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
User::updateOrCreate(
|
|
['email' => 'admin@gmail.com'],
|
|
[
|
|
'password' => Hash::make('12345678'),
|
|
'username' => 'admin',
|
|
'phone' => '09123456789',
|
|
'level' => UserEnum::Admin->value,
|
|
'fullname' => 'admin',
|
|
'national_code' => '1234567890',
|
|
]
|
|
);
|
|
|
|
$permissions = [
|
|
'users' => [
|
|
'label' => 'دسترسی به کاربران',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست کاربران',
|
|
'create' => 'دسترسی به ایجاد کاربر',
|
|
'edit' => 'دسترسی به ویرایش کاربر',
|
|
'delete' => 'دسترسی به حذف کاربر',
|
|
'own' => 'دسترسی به اطلاعات خود کاربر',
|
|
],
|
|
],
|
|
'permissions' => [
|
|
'label' => 'دسترسی به سطح دسترسیها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست سطح دسترسیها',
|
|
'create' => 'دسترسی به ایجاد سطح دسترسی',
|
|
'edit' => 'دسترسی به ویرایش سطح دسترسی',
|
|
'delete' => 'دسترسی به حذف سطح دسترسی',
|
|
'own' => 'دسترسی به سطح دسترسی خود',
|
|
],
|
|
],
|
|
'medium' => [
|
|
'label' => 'دسترسی به رسانه ها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست رسانه ها',
|
|
'create' => 'دسترسی به ایجاد رسانه',
|
|
'edit' => 'دسترسی به ویرایش رسانه',
|
|
'delete' => 'دسترسی به حذف رسانه',
|
|
'own' => 'دسترسی به رسانه های خود',
|
|
],
|
|
],
|
|
'roles' => [
|
|
'label' => 'دسترسی به نقشها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست نقشها',
|
|
'create' => 'دسترسی به ایجاد نقش',
|
|
'edit' => 'دسترسی به ویرایش نقش',
|
|
'delete' => 'دسترسی به حذف نقش',
|
|
'own' => 'دسترسی به نقش خود',
|
|
],
|
|
],
|
|
'pets' => [
|
|
'label' => 'دسترسی به کیس ها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست کیس ها',
|
|
'create' => 'دسترسی به ایجاد کیس',
|
|
'edit' => 'دسترسی به ویرایش کیس',
|
|
'delete' => 'دسترسی به حذف کیس',
|
|
'own' => 'دسترسی به کیس خود',
|
|
],
|
|
],
|
|
'documents' => [
|
|
'label' => 'دسترسی به پرونده ها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست پرونده ها',
|
|
'create' => 'دسترسی به ایجاد پرونده',
|
|
'edit' => 'دسترسی به ویرایش پرونده',
|
|
'delete' => 'دسترسی به حذف پرونده',
|
|
'own' => 'دسترسی به پرونده خود',
|
|
],
|
|
],
|
|
'reports' => [
|
|
'label' => 'دسترسی به گزارش ها',
|
|
'children' => [
|
|
'index' => 'دسترسی به لیست گزارش ها',
|
|
'create' => 'دسترسی به ایجاد گزارش',
|
|
'edit' => 'دسترسی به ویرایش گزارش',
|
|
'delete' => 'دسترسی به حذف گزارش',
|
|
'own' => 'دسترسی به گزارش خود',
|
|
],
|
|
],
|
|
];
|
|
foreach ($permissions as $key => $data) {
|
|
$parent = Permission::create([
|
|
'name' => $key,
|
|
'label' => $data['label'],
|
|
'parent_id' => 0,
|
|
]);
|
|
|
|
foreach ($data['children'] as $action => $label) {
|
|
Permission::create([
|
|
'name' => "$key.$action",
|
|
'label' => $label,
|
|
'parent_id' => $parent->id,
|
|
]);
|
|
}
|
|
}
|
|
|
|
$adminRole = Role::firstOrCreate(['name' => 'admin', 'label' => 'مدیر کل']);
|
|
$adminRole->syncPermissions(Permission::all());
|
|
|
|
|
|
$admin = User::where('email', 'admin@gmail.com')->first();
|
|
$admin->assignRole($adminRole);
|
|
|
|
}
|
|
}
|