isMethod('POST') ? Permission::ROLES_CREATE : Permission::ROLES_UPDATE; return $this->user()?->can($permission->value) ?? false; } protected function prepareForValidation(): void { if ($this->has('name')) { $this->merge([ 'name' => Str::slug($this->input('name')), ]); } } /** * @return array */ public function rules(): array { $roleId = $this->route('role')?->id; return [ 'name' => [ 'required', 'string', 'max:50', 'regex:/^[a-z0-9\-]+$/', Rule::unique('roles', 'name')->ignore($roleId), ], 'permissions' => ['nullable', 'array'], 'permissions.*' => ['string', Rule::exists('permissions', 'name')], ]; } /** * @return array */ public function attributes(): array { return [ 'name' => 'nama', 'permissions' => 'hak akses', ]; } }