123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <?php
-
- namespace Illuminate\Auth;
-
- use Illuminate\Support\Str;
- use Illuminate\Contracts\Auth\UserProvider;
- use Illuminate\Contracts\Hashing\Hasher as HasherContract;
- use Illuminate\Contracts\Auth\Authenticatable as UserContract;
-
- class EloquentUserProvider implements UserProvider
- {
- /**
- * The hasher implementation.
- *
- * @var \Illuminate\Contracts\Hashing\Hasher
- */
- protected $hasher;
-
- /**
- * The Eloquent user model.
- *
- * @var string
- */
- protected $model;
-
- /**
- * Create a new database user provider.
- *
- * @param \Illuminate\Contracts\Hashing\Hasher $hasher
- * @param string $model
- * @return void
- */
- public function __construct(HasherContract $hasher, $model)
- {
- $this->model = $model;
- $this->hasher = $hasher;
- }
-
- /**
- * Retrieve a user by their unique identifier.
- *
- * @param mixed $identifier
- * @return \Illuminate\Contracts\Auth\Authenticatable|null
- */
- public function retrieveById($identifier)
- {
- $model = $this->createModel();
-
- return $model->newQuery()
- ->where($model->getAuthIdentifierName(), $identifier)
- ->first();
- }
-
- /**
- * Retrieve a user by their unique identifier and "remember me" token.
- *
- * @param mixed $identifier
- * @param string $token
- * @return \Illuminate\Contracts\Auth\Authenticatable|null
- */
- public function retrieveByToken($identifier, $token)
- {
- $model = $this->createModel();
-
- $model = $model->where($model->getAuthIdentifierName(), $identifier)->first();
-
- if (! $model) {
- return null;
- }
-
- $rememberToken = $model->getRememberToken();
-
- return $rememberToken && hash_equals($rememberToken, $token) ? $model : null;
- }
-
- /**
- * Update the "remember me" token for the given user in storage.
- *
- * @param \Illuminate\Contracts\Auth\Authenticatable $user
- * @param string $token
- * @return void
- */
- public function updateRememberToken(UserContract $user, $token)
- {
- $user->setRememberToken($token);
-
- $timestamps = $user->timestamps;
-
- $user->timestamps = false;
-
- $user->save();
-
- $user->timestamps = $timestamps;
- }
-
- /**
- * Retrieve a user by the given credentials.
- *
- * @param array $credentials
- * @return \Illuminate\Contracts\Auth\Authenticatable|null
- */
- public function retrieveByCredentials(array $credentials)
- {
- if (empty($credentials) ||
- (count($credentials) === 1 &&
- array_key_exists('password', $credentials))) {
- return;
- }
-
- // First we will add each credential element to the query as a where clause.
- // Then we can execute the query and, if we found a user, return it in a
- // Eloquent User "model" that will be utilized by the Guard instances.
- $query = $this->createModel()->newQuery();
-
- foreach ($credentials as $key => $value) {
- if (! Str::contains($key, 'password')) {
- $query->where($key, $value);
- }
- }
-
- return $query->first();
- }
-
- /**
- * Validate a user against the given credentials.
- *
- * @param \Illuminate\Contracts\Auth\Authenticatable $user
- * @param array $credentials
- * @return bool
- */
- public function validateCredentials(UserContract $user, array $credentials)
- {
- $plain = $credentials['password'];
-
- return $this->hasher->check($plain, $user->getAuthPassword());
- }
-
- /**
- * Create a new instance of the model.
- *
- * @return \Illuminate\Database\Eloquent\Model
- */
- public function createModel()
- {
- $class = '\\'.ltrim($this->model, '\\');
-
- return new $class;
- }
-
- /**
- * Gets the hasher implementation.
- *
- * @return \Illuminate\Contracts\Hashing\Hasher
- */
- public function getHasher()
- {
- return $this->hasher;
- }
-
- /**
- * Sets the hasher implementation.
- *
- * @param \Illuminate\Contracts\Hashing\Hasher $hasher
- * @return $this
- */
- public function setHasher(HasherContract $hasher)
- {
- $this->hasher = $hasher;
-
- return $this;
- }
-
- /**
- * Gets the name of the Eloquent user model.
- *
- * @return string
- */
- public function getModel()
- {
- return $this->model;
- }
-
- /**
- * Sets the name of the Eloquent user model.
- *
- * @param string $model
- * @return $this
- */
- public function setModel($model)
- {
- $this->model = $model;
-
- return $this;
- }
- }
|