middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data): \Illuminate\Contracts\Validation\Validator { return Validator::make($data, [ 'name' => ['required', 'string', 'max:80'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return User|\Illuminate\Http\RedirectResponse */ protected function create(array $data) { $invitation_token = $data['token']; $new_invitation = null; $invitations = ManagerInvite::where('email', $data['email'])->get(); foreach($invitations as $invitation) { if (Hash::check($invitation_token, $invitation->invitation_token)) { $new_invitation = ManagerInvite::where('invitation_token', $invitation->invitation_token)->firstOrFail(); } } $username = strtolower(preg_replace('/\s+/', '', $data['name'])) . uniqid(); $image_name = ($username . '-' . uniqid() . '.jpg'); $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'username' => $username, 'profile_picture' => $image_name, 'type' => 'MANAGER', ]); $user->markEmailAsVerified(); $manager = Manager::create([ 'user_id' => $user->id ]); $manager->user()->associate($user); try { $manager->save(); } catch (Exception $e) { return back() ->with('error', $e->getMessage()); } $new_invitation->registered_at = $user->created_at; $artist = Artist::where('user_id', $new_invitation->artist_id)->firstOrFail(); $artist->manager()->associate($manager); try { $artist->save(); } catch (Exception $e) { return back() ->with('error', $e->getMessage()); } try { $new_invitation->save(); } catch(Exception $e) { return back() ->with('error', $e->getMessage()); } UtilController::saveAvatarImage($image_name, $data['name']); return $user; } /** * @param Request $request * @param $token * @return Application|Factory|View */ public function showRegistrationForm(Request $request, $token): View|Factory|Application { return view('auth.manager.register') ->with('token', $token) ->with('email', $request->get('email')); } }