Files
radicall/database/seeders/PermissionSeeder.php
T

144 lines
5.9 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' => 'دسترسی به گزارش خود',
],
],
'shifts' => [
'label' => 'دسترسی به شیفت ها',
'children' => [
'index' => 'دسترسی به لیست شیفت ها',
'create' => 'دسترسی به ایجاد شیفت',
'edit' => 'دسترسی به ویرایش شیفت',
'delete' => 'دسترسی به حذف شیفت',
'own' => 'دسترسی به شیفت های خود',
],
],
'withdrawals' => [
'label' => 'دسترسی به درخواست‌های برداشت',
'children' => [
'index' => 'دسترسی به لیست درخواست‌های برداشت',
],
],
];
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);
}
}