middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:80'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'account_type' => ['required', 'string', 'regex:(artist|organizer)'], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return User|void */ protected function create(array $data) { $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' => strtoupper($data['account_type']), ]); switch(strtolower($data['account_type'])) { case 'artist': $artist = Artist::create([ 'user_id' => $user->id ]); $artist->user()->associate($user); try { $artist->save(); } catch (Exception $e) { Log::error($e->getMessage()); } break; case 'organizer': $organizer = Organizer::create([ 'user_id' => $user->id ]); $organizer->user()->associate($user); try { $organizer->save(); } catch (Exception $e) { Log::error($e->getMessage()); } } UtilController::saveAvatarImage($image_name, $data['name']); return $user; } }