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

namespace IlluminateAuth;

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

class 
DatabaseUserProvider implements UserProvider
{
    
/**
     * The active database connection.
     *
     * @var IlluminateDatabaseConnectionInterface
     */
    
protected $connection;

    
/**
     * The hasher implementation.
     *
     * @var IlluminateContractsHashingHasher
     */
    
protected $hasher;

    
/**
     * The table containing the users.
     *
     * @var string
     */
    
protected $table;

    
/**
     * Create a new database user provider.
     *
     * @param  IlluminateDatabaseConnectionInterface  $connection
     * @param  IlluminateContractsHashingHasher  $hasher
     * @param  string  $table
     * @return void
     */
    
public function __construct(ConnectionInterface $connectionHasherContract $hasher$table)
    {
        
$this->connection $connection;
        
$this->table $table;
        
$this->hasher $hasher;
    }

    
/**
     * Retrieve a user by their unique identifier.
     *
     * @param  mixed  $identifier
     * @return IlluminateContractsAuthAuthenticatable|null
     */
    
public function retrieveById($identifier)
    {
        
$user $this->connection->table($this->table)->find($identifier);

        return 
$this->getGenericUser($user);
    }

    
/**
     * 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)
    {
        
$user $this->getGenericUser(
            
$this->connection->table($this->table)->find($identifier)
        );

        return 
$user && $user->getRememberToken() && hash_equals($user->getRememberToken(), $token)
                    ? 
$user 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)
    {
        
$this->connection->table($this->table)
                ->
where($user->getAuthIdentifierName(), $user->getAuthIdentifier())
                ->
update([$user->getRememberTokenName() => $token]);
    }

    
/**
     * 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
        // generic "user" object that will be utilized by the Guard instances.
        
$query $this->connection->table($this->table);

        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);
            }
        }

        
// Now we are ready to execute the query to see if we have a user matching
        // the given credentials. If not, we will just return null and indicate
        // that there are no matching users from the given credential arrays.
        
$user $query->first();

        return 
$this->getGenericUser($user);
    }

    
/**
     * Get the generic user.
     *
     * @param  mixed  $user
     * @return IlluminateAuthGenericUser|null
     */
    
protected function getGenericUser($user)
    {
        if (! 
is_null($user)) {
            return new 
GenericUser((array) $user);
        }
    }

    
/**
     * Validate a user against the given credentials.
     *
     * @param  IlluminateContractsAuthAuthenticatable  $user
     * @param  array  $credentials
     * @return bool
     */
    
public function validateCredentials(UserContract $user, array $credentials)
    {
        return 
$this->hasher->check(
            
$credentials['password'], $user->getAuthPassword()
        );
    }
}
Онлайн: 0
Реклама