middleware('guest'); } /** * Check if public registration is enabled. * * @return bool */ protected function isRegistrationEnabled() { return Setting::get('public_registration', 'off') === 'on'; } /** * Show the application registration form. * * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View */ public function showRegistrationForm() { if (!$this->isRegistrationEnabled()) { return redirect()->route('login')->with('error', 'O registro público está desativado no momento.'); } return view('auth.register'); } /** * Handle a registration request for the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response */ public function register(\Illuminate\Http\Request $request) { if (!$this->isRegistrationEnabled()) { return redirect()->route('login')->with('error', 'O registro público está desativado no momento.'); } $request->validate(['captcha' => 'required|numeric']); if ($request->captcha != session('captcha_result')) { throw \Illuminate\Validation\ValidationException::withMessages([ 'captcha' => ['O resultado da soma está incorreto.'], ]); } $this->validator($request->all())->validate(); event(new \Illuminate\Auth\Events\Registered($user = $this->create($request->all()))); $this->guard()->login($user); if ($response = $this->registered($request, $user)) { return $response; } return $request->wantsJson() ? new \Illuminate\Http\JsonResponse([], 201) : redirect($this->redirectPath()); } /** * Get a validator for an incoming registration request. * * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'company' => ['nullable', 'string', 'max:255'], 'website' => ['nullable', 'string', 'max:255'], 'whatsapp' => ['nullable', 'string', 'max:20'], ]); } /** * Create a new user instance after a valid registration. * * @return User */ protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'user_type' => 'User', // Force all public registrations to be regular users 'company' => $data['company'] ?? null, 'website' => $data['website'] ?? null, 'whatsapp' => $data['whatsapp'] ?? null, 'permissions' => [], ]); // Notificar administradores sobre o novo cadastro $admins = User::where('user_type', 'Admin')->get(); Notification::send($admins, new NewUserRegisteredNotification($user)); return $user; } }