middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { //check if ip has already made an account $data['ip'] = session()->get('ip') ?? request()->ip(); if (User::where('ip', '=', request()->ip())->exists()) session()->put('ip', request()->ip()); return Validator::make($data, [ 'name' => ['required', 'string', 'max:30', 'min:4', 'alpha_num', 'unique:users'], 'email' => ['required', 'string', 'email', 'max:64', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'g-recaptcha-response' => ['recaptcha'], 'ip' => ['unique:users'], ], [ 'ip.unique' => "You have already made an account with us! Please contact support if you think this is incorrect." ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return User|\Illuminate\Http\RedirectResponse */ protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'credits' => Configuration::getValueByKey('INITIAL_CREDITS'), 'server_limit' => Configuration::getValueByKey('INITIAL_SERVER_LIMIT'), 'password' => Hash::make($data['password']), ]); $response = Pterodactyl::client()->post('/application/users', [ "external_id" => (string)$user->id, "username" => $user->name, "email" => $user->email, "first_name" => $user->name, "last_name" => $user->name, "password" => $data['password'], "root_admin" => false, "language" => "en" ]); if ($response->failed()) { $user->delete(); redirect()->route('register')->with('error', 'pterodactyl error'); return $user; } $user->update([ 'pterodactyl_id' => $response->json()['attributes']['id'] ]); return $user; } }