title: Argument 1 passed to SessionGuard::login() must be an instance of Auth\Authenticatable in Laravel 5.2
body: <p>I am using Laravel 5.2.</p>
  <p>I added a new field to the <code>users</code> table called <code>username</code> and I included it in the view and <code>AuthController.php</code></p>
  <p>I am also doing a check to see if the user is going to use a reserved slug for his username, if yes, I throw an error, if the username is good, I save in the database.</p>
  <p>I am checking against 2 reserved slugs <code>banner</code> and <code>image</code> - that's all I have reserved.</p>
  <p>If I remove the check, the data gets saved in the database normally, including the reserved slugs. So I must do the check.</p>
  <p>However, when I apply the check, I get this error</p>
  <blockquote>
  <p>ErrorException in SessionGuard.php line 439:</p>
  <p>Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, string given, called in C:\xampp\htdocs\socialnet\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 63 and defined</p>
  </blockquote>
  <p>This is my code in <code>AuthController</code> after I've modified it</p>
  <pre><code>protected function validator(array $data)
  {
      return Validator::make($data, [
          'name' =&gt; 'required|max:255',
          'email' =&gt; 'required|email|max:255|unique:users',
          'password' =&gt; 'required|min:6|confirmed',
          'username' =&gt; 'required|alpha_num|unique:users,username',
      ]);
  }
  
  protected function create(array $data)
  {
      $check = $this-&gt;slugCheck($data['username']);
  
      if($check['status'] == 'nok') {
          return 'this username is a reserved name';
      } else {
          return User::create([
              'name' =&gt; $data['name'],
              'email' =&gt; $data['email'],
              'password' =&gt; bcrypt($data['password']),
              'username' =&gt; $data['username'],
          ]);
      }
  }
  
  public function slugCheck($slug){
  
      $slug = strtolower($slug);
  
      // is the slug in the banned words list
      //
      if(array_search($slug, array('','banner','image'))){
          return array('status' =&gt; 'nok', 'message' =&gt; 'This slug is on a list of reserved names');
      }
  
      $user = User::where('username', '=', $slug)-&gt;first();
  
      if($user){
          return array('status' =&gt; 'nok', 'message' =&gt; 'This slug is already taken');
      } else {
          return array('status' =&gt; 'ok', 'message' =&gt; 'Slug is unique');
      }
  
  }
  </code></pre>
  <p>If I <code>dd($check)</code> after declaring the <code>$check</code> variable and choosing a reserved name, I get the correct response.</p>
  <pre><code>array:2 [▼
    &quot;status&quot; =&gt; &quot;nok&quot;
    &quot;message&quot; =&gt; &quot;This slug is on a list of reserved names&quot;
  ]
  </code></pre>