File: //home/armgroup/libs/app/Http/Livewire/Admin/Role/Create.php
<?php
namespace App\Http\Livewire\Admin\Role;
use App\Http\Livewire\ConvertEmptyStringsToNull;
use App\Http\Livewire\General;
use Illuminate\Support\Facades\DB;
use Livewire\Component;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class Create extends Component
{
use ConvertEmptyStringsToNull, General, TogglePermission;
public $name;
public $permissions;
protected $listeners = ['permissionChanged'];
public function mount()
{
$this->permissions = Permission::oldest('label')->get();
}
public function render()
{
return view('livewire.admin.role.create');
}
protected function rules()
{
return [
'name' => 'required|max:100|string|unique:roles',
'permission_id' => 'exists:permissions,id',
];
}
public function store()
{
$this->validate();
DB::transaction(function () {
$role = Role::create(['name' => $this->name]);
if (count($this->permission_id)) {
$role->syncPermissions($this->permission_id);
}
saveActivity("نقش کاربری {$role->name} ایجاد شد", $role);
});
$this->doneMessage("نقش کاربری {$this->name} با موفقیت ایجاد شد.");
return redirect()->route('admin.roles.index');
}
}