From bbf507fe843c5ec0ba3178165c34067769adcd63 Mon Sep 17 00:00:00 2001 From: Brett Brewer Date: Thu, 12 Feb 2015 18:10:36 -0700 Subject: [PATCH] Fixes for L5 native auth functionality. Updated contract in DoctrineUserProvider.php. Tweaked a couple of things in Traits/Authentication.php - changed function getAuthIdentifier to return the primary key value rather than the primary key name, and to return 'rememberToken' instead of remember_token in the getRememberTokenName function. Fixed a prob with the Validation/DoctrinePresenceVerifier that was causing it to always return null leading to duplicate users. --- src/DoctrineUserProvider.php | 2 +- src/Traits/Authentication.php | 4 ++-- src/Validation/DoctrinePresenceVerifier.php | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/DoctrineUserProvider.php b/src/DoctrineUserProvider.php index 71b569d..72c24b8 100644 --- a/src/DoctrineUserProvider.php +++ b/src/DoctrineUserProvider.php @@ -2,7 +2,7 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityRepository; -use Illuminate\Auth\UserProviderInterface; +use Illuminate\Contracts\Auth\UserProvider as UserProviderInterface; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Hashing\Hasher; diff --git a/src/Traits/Authentication.php b/src/Traits/Authentication.php index aaabb7f..c724c61 100644 --- a/src/Traits/Authentication.php +++ b/src/Traits/Authentication.php @@ -27,7 +27,7 @@ public function setPassword($password) { * @return mixed */ public function getAuthIdentifier() { - return method_exists($this, 'getKeyName') ? $this->getKeyName() : 'id'; + return method_exists($this, 'getKey') ? $this->getKey() : $this->id; } /** @@ -60,6 +60,6 @@ public function setRememberToken($value) { * @return string */ public function getRememberTokenName() { - return 'remember_token'; + return 'rememberToken'; } } diff --git a/src/Validation/DoctrinePresenceVerifier.php b/src/Validation/DoctrinePresenceVerifier.php index 820f58d..1f4d629 100644 --- a/src/Validation/DoctrinePresenceVerifier.php +++ b/src/Validation/DoctrinePresenceVerifier.php @@ -27,7 +27,7 @@ public function __construct(EntityManagerInterface $entityManager) */ public function getCount($collection, $column, $value, $excludeId = null, $idColumn = null, array $extra = array()) { - $queryParts = ['SELECT COUNT(*) FROM', $collection, 'WHERE', "$column = ?"]; + $queryParts = ['SELECT COUNT(*) as usercount FROM', $collection, 'WHERE', "$column = ?"]; if (!is_null($excludeId) && $excludeId != 'NULL') { $queryParts[] = 'AND '.($idColumn ?: 'id').' <> ?'; @@ -62,7 +62,7 @@ public function getCount($collection, $column, $value, $excludeId = null, $idCol */ public function getMultiCount($collection, $column, array $values, array $extra = array()) { - $queryParts = ['SELECT COUNT(*) FROM', $collection, 'WHERE', "$column IN (?)"]; + $queryParts = ['SELECT COUNT(*) as usercount FROM', $collection, 'WHERE', "$column IN (?)"]; foreach ($extra as $key => $extraValue) { $queryParts[] = "AND $key = ?"; @@ -88,6 +88,10 @@ private function createQueryFrom(array $queryParts = []) { $rsm = new ResultSetMapping(); + //If we don't set up a scalar result mapping, we'll always get back null from the hydrateColumnInfo function in + //the abstract class Doctrine\ORM\Internal\Hydration\AbstractHydrator, which all the hydrators extend. + $rsm = $rsm->addScalarResult('usercount','usercount','integer'); + return $this->entityManager->createNativeQuery(implode(' ', $queryParts), $rsm); } }