summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Cornutt <enygma@phpdeveloper.org>2015-07-19 09:55:19 -0500
committerChris Cornutt <enygma@phpdeveloper.org>2015-07-19 09:55:19 -0500
commit7b9c4a5814404e70637c883d85e1b2ed060a3ccc (patch)
treea1c3243632454124f4fe1459de4b9a9798b9b26e
parent597de25cf082295e66b97b15659365134f767dce (diff)
downloadgatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.zip
gatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.tar.gz
gatekeeper-7b9c4a5814404e70637c883d85e1b2ed060a3ccc.tar.bz2
Initial statges of a custom provider for Laravel5
-rw-r--r--src/Psecio/Gatekeeper/Provider/Laravel5/AuthManager.php13
-rw-r--r--src/Psecio/Gatekeeper/Provider/Laravel5/AuthServiceProvider.php38
-rw-r--r--src/Psecio/Gatekeeper/Provider/Laravel5/UserAuthenticatable.php36
-rw-r--r--src/Psecio/Gatekeeper/Provider/Laravel5/UserProvider.php71
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