. */ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Profile; use App\User; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; class RegisterController extends Controller { /* |-------------------------------------------------------------------------- | Register Controller |-------------------------------------------------------------------------- | | This controller handles the registration of new users as well as their | validation and creation. By default this controller uses a trait to | provide this functionality without requiring any additional code. | */ use RegistersUsers; /** * Where to redirect users after registration. * * @var string */ protected $redirectTo = '/dashboard'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); } public function showRegistrationForm() { $users = User::where('originalIP', \request()->ip())->get(); foreach ($users as $user) { if ($user && $user->isBanned()) { abort(403, 'You do not have permission to access this page.'); } } return view('auth.register'); } /** * 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, [ 'uuid' => ['required', 'string', 'unique:users', 'min:32', 'max:32'], 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:10', 'confirmed', 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%]).*$/'], ], [ 'uuid.required' => 'Please enter a valid (and Premium) Minecraft username! We do not support cracked users.', ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { $user = User::create([ 'uuid' => $data['uuid'], 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'originalIP' => request()->ip(), ]); // It's not the registration controller's concern to create a profile for the user, // so this code has been moved to it's respective observer, following the separation of concerns pattern. $user->assignRole('user'); return $user; } }