Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php
Строк: 226
<?php

namespace IlluminateAuth;

use 
Closure;
use 
IlluminateContractsAuthAuthenticatable as UserContract;
use 
IlluminateContractsAuthUserProvider;
use 
IlluminateContractsHashingHasher as HasherContract;
use 
IlluminateContractsSupportArrayable;

class 
EloquentUserProvider implements UserProvider
{
    
/**
     * The hasher implementation.
     *
     * @var IlluminateContractsHashingHasher
     */
    
protected $hasher;

    
/**
     * The Eloquent user model.
     *
     * @var string
     */
    
protected $model;

    
/**
     * The callback that may modify the user retrieval queries.
     *
     * @var (Closure(IlluminateDatabaseEloquentBuilder):mixed)|null
     */
    
protected $queryCallback;

    
/**
     * Create a new database user provider.
     *
     * @param  IlluminateContractsHashingHasher  $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 IlluminateContractsAuthAuthenticatable|null
     */
    
public function retrieveById($identifier)
    {
        
$model $this->createModel();

        return 
$this->newModelQuery($model)
                    ->
where($model->getAuthIdentifierName(), $identifier)
                    ->
first();
    }

    
/**
     * Retrieve a user by their unique identifier and "remember me" token.
     *
     * @param  mixed  $identifier
     * @param  string  $token
     * @return IlluminateContractsAuthAuthenticatable|null
     */
    
public function retrieveByToken($identifier$token)
    {
        
$model $this->createModel();

        
$retrievedModel $this->newModelQuery($model)->where(
            
$model->getAuthIdentifierName(), $identifier
        
)->first();

        if (! 
$retrievedModel) {
            return;
        }

        
$rememberToken $retrievedModel->getRememberToken();

        return 
$rememberToken && hash_equals($rememberToken$token) ? $retrievedModel null;
    }

    
/**
     * Update the "remember me" token for the given user in storage.
     *
     * @param  IlluminateContractsAuthAuthenticatable  $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 IlluminateContractsAuthAuthenticatable|null
     */
    
public function retrieveByCredentials(array $credentials)
    {
        
$credentials array_filter(
            
$credentials,
            
fn ($key) => ! str_contains($key'password'),
            
ARRAY_FILTER_USE_KEY
        
);

        if (empty(
$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->newModelQuery();

        foreach (
$credentials as $key => $value) {
            if (
is_array($value) || $value instanceof Arrayable) {
                
$query->whereIn($key$value);
            } elseif (
$value instanceof Closure) {
                
$value($query);
            } else {
                
$query->where($key$value);
            }
        }

        return 
$query->first();
    }

    
/**
     * Validate a user against the given credentials.
     *
     * @param  IlluminateContractsAuthAuthenticatable  $user
     * @param  array  $credentials
     * @return bool
     */
    
public function validateCredentials(UserContract $user, array $credentials)
    {
        
$plain $credentials['password'];

        return 
$this->hasher->check($plain$user->getAuthPassword());
    }

    
/**
     * Get a new query builder for the model instance.
     *
     * @param  IlluminateDatabaseEloquentModel|null  $model
     * @return IlluminateDatabaseEloquentBuilder
     */
    
protected function newModelQuery($model null)
    {
        
$query is_null($model)
                ? 
$this->createModel()->newQuery()
                : 
$model->newQuery();

        
with($query$this->queryCallback);

        return 
$query;
    }

    
/**
     * Create a new instance of the model.
     *
     * @return IlluminateDatabaseEloquentModel
     */
    
public function createModel()
    {
        
$class '\'.ltrim($this->model, '\');

        return new $class;
    }

    /**
     * Gets the hasher implementation.
     *
     * @return IlluminateContractsHashingHasher
     */
    public function getHasher()
    {
        return $this->hasher;
    }

    /**
     * Sets the hasher implementation.
     *
     * @param  IlluminateContractsHashingHasher  $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;
    }

    /**
     * Get the callback that modifies the query before retrieving users.
     *
     * @return Closure|null
     */
    public function getQueryCallback()
    {
        return $this->queryCallback;
    }

    /**
     * Sets the callback to modify the query before retrieving users.
     *
     * @param  (Closure(IlluminateDatabaseEloquentBuilder):mixed)|null  $queryCallback
     * @return $this
     */
    public function withQuery($queryCallback = null)
    {
        $this->queryCallback = $queryCallback;

        return $this;
    }
}
Онлайн: 0
Реклама