/**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return User
  */
 protected function create(array $data)
 {
     $verification_token = str_random(50);
     $user = User::create(['username' => $data['username'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'verification_token' => $verification_token]);
     Profile::create(['user_id' => $user->id, 'firstname' => $data['firstname'], 'lastname' => $data['lastname'], 'gender' => $data['gender']]);
     Event::fire(new UserRegistered($user));
     return $user;
 }
 public function confirm($verification_token)
 {
     if (!$verification_token) {
         throw new Exception("Invalid Confirmation Code", 1);
     }
     $user = User::where('verification_token', '=', $verification_token)->first();
     if (!$user) {
         throw new Exception("Invalid Confirmation Code", 1);
     }
     $user->status = 'active';
     $user->verification_token = null;
     $user->save();
     Flash::overlay('You have successfully verified your account.', 'Congratulations');
     return redirect('auth/login');
 }