title: Laravel unexpected error "class user contains 3 abstract methods..."
body: <p>While programming my Authentication app on Laravel, I came across to an error I've never seen before. I've been brainstorming for almost an hour for the cause of this problem but yet I can't find a solution.</p>
  
  <p>Error:</p>
  
  <blockquote>
    <p>Class User contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Auth\UserInterface::getRememberToken, Illuminate\Auth\UserInterface::setRememberToken, Illuminate\Auth\UserInterface::getRememberTokenName)</p>
  </blockquote>
  
  <p>User.php Model:</p>
  
  <pre><code>&lt;?php
  
  use Illuminate\Auth\UserInterface;
  use Illuminate\Auth\Reminders\RemindableInterface;
  
  class User extends Eloquent implements UserInterface, RemindableInterface {
  
  protected $fillable = [
      "email",
      "username",
      "password",
      "password_temp",
      "code",
      "active",
      "created_at",
      "updated_at",
      "banned"
  ];
  
  /**
   * The database table used by the model.
   *
   * @var string
   */
  protected $table = 'users';
  
  /**
   * The attributes excluded from the model's JSON form.
   *
   * @var array
   */
  protected $hidden = array('password');
  
  /**
   * Get the unique identifier for the user.
   *
   * @return mixed
   */
  public function getAuthIdentifier()
  {
      return $this-&gt;getKey();
  }
  
  /**
   * Get the password for the user.
   *
   * @return string
   */
  public function getAuthPassword()
  {
      return $this-&gt;password;
  }
  
  /**
   * Get the e-mail address where password reminders are sent.
   *
   * @return string
   */
  public function getReminderEmail()
  {
      return $this-&gt;email;
  }
  
  }
  </code></pre>
  
  <p>And the RegisterController.php</p>
  
  <pre><code>&lt;?php
  
  class RegisterController extends BaseController {
  
  public function getRegister()
  {
      return View::make('template.home.register');
  }
  
  public function postRegister()
  {
      $rules = [
          "email"         =&gt; "required|email|max:50|unique:users",
          "username"      =&gt; "required|max:50|min:5|unique:users",
          "password"      =&gt; "required|max:50|min:6",
          "password_again"=&gt; "required|same:password",
      ];
  
      $messages = ["required" =&gt; "This field is required." ];
  
      $validator = Validator::make(Input::all(), $rules, $messages);
  
      if($validator-&gt;fails())
      {
          return Redirect::route('register')-&gt;withErrors($validator)-&gt;withInput();
      } else {
          $email      = Input::get('email');
          $username   = Input::get('username');
          $password   = Input::get('password');
          $code       = str_random(60);
  
          $user = User::create([
              'email'         =&gt; $email,
              'username'      =&gt; $username,
              'password'      =&gt; Hash::make($password),
              'code'          =&gt; $code,
              'activated'     =&gt; 0,
              'banned'        =&gt; 0
          ]);
  
          if ($user)
          {
              Mail::send('template.email.activate', ['link' =&gt; URL::route('activate', $code), 'username' =&gt; $username], function($message) use ($user)
              {
                  $message-&gt;to($user-&gt;email, $user-&gt;username)-&gt;subject('Account Registration');
              });
  
              return Redirect::route('register')-&gt;with('homeError', 'There was a problem creating your account.');
          }
      }
      return Redirect::route('register')-&gt;with('homeError', 'Account could not be created.');
  }
  }
  </code></pre>