Trim::class, 'firstname' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], 'lastname' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], 'address' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], 'address2' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], 'phone' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], 'city' => [Trim::class, FilterVars::class => ['filter' => FILTER_SANITIZE_STRING]], ]; /** * Determine if the user is authorized to make this request. * * @return boolean */ public function authorize() { $this->merge([ 'opt_in' => $this->opt_in ? true : false, 'agree' => $this->agree ? true : false ]); return auth('customer')->guest(); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'email' => 'required|email:rfc,dns,spoof,filter|max:255|unique:customers,email', 'firstname' => 'required|string|min:1|max:255', 'lastname' => 'required|string|max:255', 'birth_date' => 'required|string|date_format:Y-m-d', 'address' => 'required|string|min:2|max:255', 'address2' => 'sometimes|string|max:255', 'phone' => 'sometimes|string|max:255', 'city' => 'required|string|min:2|max:255', 'country' => [ 'required', new EnumIsValidRule(Country::class) ], 'postcode' => 'required|numeric|digits_between:4,5', 'password' => [ 'required', 'confirmed', 'min:8', 'max:255', Password::min(8) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised() ], 'opt_in' => 'required|boolean', 'agree' => 'required|boolean' ]; } }