user())) { return false; } if ( !$user->can('createPrivateMessage', $this->route()->ticket) && $this->is_private == MessageTypeEnum::private ) { return false; } return auth()->check() and $user->sites and ($user->isAdmin() or $user->sites->contains( $this->route()->ticket->site_id )); } /** * Prepare the data for validation. * * @return void */ protected function prepareForValidation() { /** @var \App\Models\User */ $user = auth()->user(); $this->merge([ 'subscribe' => $this->subscribe ? true : false, 'type' => $this->is_private ? MessageTypeEnum::private->value : MessageTypeEnum::public->value ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { /** @var \App\Models\User */ $user = auth()->user(); return [ 'subscribe' => 'required|boolean', 'message' => [ 'required', 'min:' . ($user->isAdmin() ? '5' : '20'), function ($attribute, $value, $fail) { $forbidden = ['merci de', 'merci de']; foreach ($forbidden as $word) { if (stripos(strtolower($value), $word) !== false) { $fail( "Le champs 'Message' contient la chaine de caractère non autorisée suivante : $word" ); } } }, ], 'file_messages' => 'sometimes|array', 'file_messages.*' => 'mimes:pptx,docx,xlsx,csv,txt,jpeg,jpg,png,pdf,svg|max:2048', 'type' => ['required', new Enum(MessageTypeEnum::class)] ]; } }