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:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { $hashedPassword = Hash::make($data['password']); $previousHash = User::select('hash')->orderBy('id', 'desc')->first()->hash; $summedHash = Hash::make($previousHash . $data['name'] . $data['email'] . 'password' . $hashedPassword); // Hash::check to verify return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => $hashedPassword, 'prevHash' => $previousHash, 'hash' => $summedHash, 'email_token' => base64_encode($data['email']), ]); } /** * Handle a registration request for the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); dispatch(new SendVerificationEmail($user)); return view('confirmEmail'); } /** * Handle a registration request for the application. * * @param $token * @return \Illuminate\Http\Response */ public function verifyEmail($token) { $user = User::where('email_token', $token)->first(); $user->verified = 1; if ($user->save()) { return view('verificationSuccess', ['user' => $user]); } } }