Skip to content

Commit

Permalink
Adding support for mongodb password reminders, fixes mongodb#37
Browse files Browse the repository at this point in the history
  • Loading branch information
mnphpexpert committed Jan 6, 2014
1 parent d05f038 commit 172bb00
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 1 deletion.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,15 @@ Supported operations are:

Read more about the schema builder on http://laravel.com/docs/schema

Auth
----

If you want to use Laravel's native Auth functionality, register this included service provider:

'Jenssegers\Mongodb\Auth\ReminderServiceProvider',

This service provider will slightly modify the internal DatabaseReminderRepository to add support for MongoDB based password reminders. If you don't use password reminders, you don't have to register this service provider and everything else should work just fine.

Sessions
--------

Expand Down
28 changes: 28 additions & 0 deletions src/Jenssegers/Mongodb/Auth/DatabaseReminderRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php namespace Jenssegers\Mongodb\Auth;

class DatabaseReminderRepository extends \Illuminate\Auth\Reminders\DatabaseReminderRepository {

/**
* Determine if the reminder has expired.
*
* @param object $reminder
* @return bool
*/
protected function reminderExpired($reminder)
{
// Convert to object so that we can pass it to the parent method
if (is_array($reminder))
{
$reminder = (object) $reminder;
}

// Convert the DateTime object that got saved to MongoDB
if (is_array($reminder->created_at))
{
$reminder->created_at = $reminder->created_at['date'] + $reminder->created_at['timezone'];
}

return parent::reminderExpired($reminder);
}

}
31 changes: 31 additions & 0 deletions src/Jenssegers/Mongodb/Auth/ReminderServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php namespace Jenssegers\Mongodb\Auth;

use Jenssegers\Mongodb\Auth\DatabaseReminderRepository as DbRepository;

class ReminderServiceProvider extends \Illuminate\Auth\Reminders\ReminderServiceProvider {

/**
* Register the reminder repository implementation.
*
* @return void
*/
protected function registerReminderRepository()
{
$this->app->bindShared('auth.reminder.repository', function($app)
{
$connection = $app['db']->connection();

// The database reminder repository is an implementation of the reminder repo
// interface, and is responsible for the actual storing of auth tokens and
// their e-mail addresses. We will inject this table and hash key to it.
$table = $app['config']['auth.reminder.table'];

$key = $app['config']['app.key'];

$expire = $app['config']->get('auth.reminder.expire', 60);

return new DbRepository($connection, $table, $key, $expire);
});
}

}
2 changes: 1 addition & 1 deletion src/Jenssegers/Mongodb/MongodbServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ public function register()
});
}

}
}

0 comments on commit 172bb00

Please sign in to comment.