diff options
author | Chris Cornutt <enygma@phpdeveloper.org> | 2015-07-19 09:55:19 -0500 |
---|---|---|
committer | Chris Cornutt <enygma@phpdeveloper.org> | 2015-07-19 09:55:19 -0500 |
commit | 7b9c4a5814404e70637c883d85e1b2ed060a3ccc (patch) | |
tree | a1c3243632454124f4fe1459de4b9a9798b9b26e | |
parent | 597de25cf082295e66b97b15659365134f767dce (diff) | |
download | gatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.zip gatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.tar.gz gatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.tar.bz2 |
Initial statges of a custom provider for Laravel5
4 files changed, 158 insertions, 0 deletions
diff --git a/src/Psecio/Gatekeeper/Provider/Laravel5/AuthManager.php b/src/Psecio/Gatekeeper/Provider/Laravel5/AuthManager.php new file mode 100644 index 0000000..21fbe11 --- /dev/null +++ b/src/Psecio/Gatekeeper/Provider/Laravel5/AuthManager.php @@ -0,0 +1,13 @@ +<?php + +namespace Psecio\Gatekeeper\Provider\Laravel5; + +use Illuminate\Support\Manager; + +class AuthManager extends Manager +{ + public function getDefaultDriver() + { + return $this->app['config']['auth.driver']; + } +}
\ No newline at end of file diff --git a/src/Psecio/Gatekeeper/Provider/Laravel5/AuthServiceProvider.php b/src/Psecio/Gatekeeper/Provider/Laravel5/AuthServiceProvider.php new file mode 100644 index 0000000..c17ff09 --- /dev/null +++ b/src/Psecio/Gatekeeper/Provider/Laravel5/AuthServiceProvider.php @@ -0,0 +1,38 @@ +<?php + +namespace Psecio\Gatekeeper\Provider\Laravel5; +// namespace App; + +use \Illuminate\Support\Facades\Auth; +use \Psecio\Gatekeeper\Gatekeeper; +use \Psecio\Gatekeeper\Provider\Laravel5\UserProvider; +use \Psecio\Gatekeeper\Provider\Laravel5\AuthManager; +use Illuminate\Support\ServiceProvider; +use Illuminate\Routing\Router; + +class AuthServiceProvider extends ServiceProvider +{ + public function register() + { + error_log(get_class().' :: '.__FUNCTION__); + + $config = array( + 'username' => 'gk42', + 'password' => 'gk42', + 'host' => '127.0.0.1', + 'name' => 'gatekeeper' + ); + Gatekeeper::init(null, $config); + } + + public function boot(Router $router) + { + error_log(get_class().' :: '.__FUNCTION__); + + Auth::extend('gatekeeper', function($app) { + return new UserProvider(); + }); + + parent::boot($router); + } +}
\ No newline at end of file diff --git a/src/Psecio/Gatekeeper/Provider/Laravel5/UserAuthenticatable.php b/src/Psecio/Gatekeeper/Provider/Laravel5/UserAuthenticatable.php new file mode 100644 index 0000000..35c7056 --- /dev/null +++ b/src/Psecio/Gatekeeper/Provider/Laravel5/UserAuthenticatable.php @@ -0,0 +1,36 @@ +<?php + +namespace Psecio\Gatekeeper\Provider\Laravel5; +use Psecio\Gatekeeper\UserModel; +use Illuminate\Contracts\Auth\Authenticatable; + +class UserAuthenticatable implements Authenticatable +{ + private $model; + + public function __construct(UserModel $model) + { + $this->model = $model; + } + + public function getAuthIdentifier() + { + return $this->model->username; + } + public function getAuthPassword() + { + return $this->model->password; + } + public function getRememberToken() + { + return null; + } + public function setRememberToken($value) + { + return null; + } + public function getRememberTokenName() + { + return null; + } +}
\ No newline at end of file diff --git a/src/Psecio/Gatekeeper/Provider/Laravel5/UserProvider.php b/src/Psecio/Gatekeeper/Provider/Laravel5/UserProvider.php new file mode 100644 index 0000000..0ffb19e --- /dev/null +++ b/src/Psecio/Gatekeeper/Provider/Laravel5/UserProvider.php @@ -0,0 +1,71 @@ +<?php + +namespace Psecio\Gatekeeper\Provider\Laravel5; + +use Illuminate\Contracts\Auth\User as UserContract; +use Illuminate\Contracts\Auth\UserProvider as UserProviderInterface; +use Illuminate\Contracts\Auth\Authenticatable; + +use Psecio\Gatekeeper\Gatekeeper; + +class UserProvider implements UserProviderInterface +{ + public function retrieveById($identifier) + { + error_log(get_class().' :: '.__FUNCTION__); + + $user = Gatekeeper::findUserById($identifier); + if ($user === null) { + return null; + } + return new UserAuthenticatable($user); + } + + public function retrieveByToken($identifier, $token) + { + error_log(get_class().' :: '.__FUNCTION__); + } + + public function updateRememberToken(Authenticatable $user, $token) + { + error_log(get_class().' :: '.__FUNCTION__); + } + + /** + * Return \Illuminate\Contracts\Auth\Authenticatable + * + * @param array $credentials Credentials to use in locating the user + * @return \Illuminate\Contracts\Auth\Authenticatable instance|null + */ + public function retrieveByCredentials(array $credentials) + { + if (isset($credentials['email'])) { + $user = Gatekeeper::findUserByEmail($credentials['email']); + } elseif (isset($credentials['username'])) + $user = Gatekeeper::findUserByUsername($credentials['email']); + } + if ($user === null) { + return null; + } + $userAuth = new UserAuthenticatable($user); + return $userAuth; + } + + /** + * Validate a user against the given credentials. + * + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @param array $credentials + * @return bool + */ + public function validateCredentials(Authenticatable $user, array $credentials) + { + $username = $user->getAuthIdentifier(); + $credentials = [ + 'username' => $username, + 'password' => $credentials['password'] + ]; + return Gatekeeper::authenticate($credentials); + } + +}
\ No newline at end of file |