Skip to content
Barry O'Donovan edited this page Feb 9, 2015 · 2 revisions

Laravel includes a comprehensive authentication implementation - documentation available here. This Doctrine2Bridge package includes a user provider which allows you to use Doctrine2 for your user database backend.

The following instructions will explain how to use this feature:

Creating a Table for Your Users

You need a database table to store your users and passwords. You can call this table anything you like. We include an example XML schema and generated entity in the examples/auth/ folder.

What you need to do is:

  • create a table to hold your users;
  • this table requires a column for usernames/emails and password;
  • when this table is generated, add implements \Illuminate\Auth\UserInterface to the class definition;
  • implement the getAuthIdentifier() method which simply returns the object id;
  • implement the getAuthPassword() method which returns the (hashed) password.

Configure Doctrine2Bridge as Your Authentication Plugin

In your published Doctrine2Bridge configuration (config/d2bdoctrine.php), update the authentication section such as:

'auth' => array(
    'enabled' => true,
    'entity'  => '\Entities\User'   // the Doctrine2 entity representing the user
)

The entity element should be your Doctrine2 user entity class.

Now, update config/auth.php and set the driver:

'driver' => 'doctrine2bridge',

That's it! You now have Doctrine2 / Laravel combined for authentication.

Testing

You can test this by adding a user:

$hasher = new Illuminate\Hashing\BcryptHasher;
$u = new Entities\User();
$u->setUsername( 'testuser');
$u->setPassword( $hasher->make( 'qwertyuiop' ) );
D2EM::persist($u);
D2EM::flush();

To test the authentication:

echo 'Test failed authentication (result should be false): ';
var_dump( Auth::attempt( array('username' => 'testuser', 'password' => 'dontknow') ) );
echo 'Test successful authentication (result should be true): ';
var_dump( Auth::attempt( array('username' => 'testuser', 'password' => 'qwertyuiop') ) );

And the expected output is:

Test failed authentication (result should be false): bool(false)
Test successful authentication (result should be true): bool(true)