Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Auth;
4
 
5
use InvalidArgumentException;
6
 
7
trait CreatesUserProviders
8
{
9
    /**
10
     * The registered custom provider creators.
11
     *
12
     * @var array
13
     */
14
    protected $customProviderCreators = [];
15
 
16
    /**
17
     * Create the user provider implementation for the driver.
18
     *
19
     * @param  string|null  $provider
20
     * @return \Illuminate\Contracts\Auth\UserProvider|null
21
     *
22
     * @throws \InvalidArgumentException
23
     */
24
    public function createUserProvider($provider = null)
25
    {
26
        if (is_null($config = $this->getProviderConfiguration($provider))) {
27
            return;
28
        }
29
 
30
        if (isset($this->customProviderCreators[$driver = ($config['driver'] ?? null)])) {
31
            return call_user_func(
32
                $this->customProviderCreators[$driver], $this->app, $config
33
            );
34
        }
35
 
36
        return match ($driver) {
37
            'database' => $this->createDatabaseProvider($config),
38
            'eloquent' => $this->createEloquentProvider($config),
39
            default => throw new InvalidArgumentException(
40
                "Authentication user provider [{$driver}] is not defined."
41
            ),
42
        };
43
    }
44
 
45
    /**
46
     * Get the user provider configuration.
47
     *
48
     * @param  string|null  $provider
49
     * @return array|null
50
     */
51
    protected function getProviderConfiguration($provider)
52
    {
53
        if ($provider = $provider ?: $this->getDefaultUserProvider()) {
54
            return $this->app['config']['auth.providers.'.$provider];
55
        }
56
    }
57
 
58
    /**
59
     * Create an instance of the database user provider.
60
     *
61
     * @param  array  $config
62
     * @return \Illuminate\Auth\DatabaseUserProvider
63
     */
64
    protected function createDatabaseProvider($config)
65
    {
66
        $connection = $this->app['db']->connection($config['connection'] ?? null);
67
 
68
        return new DatabaseUserProvider($connection, $this->app['hash'], $config['table']);
69
    }
70
 
71
    /**
72
     * Create an instance of the Eloquent user provider.
73
     *
74
     * @param  array  $config
75
     * @return \Illuminate\Auth\EloquentUserProvider
76
     */
77
    protected function createEloquentProvider($config)
78
    {
79
        return new EloquentUserProvider($this->app['hash'], $config['model']);
80
    }
81
 
82
    /**
83
     * Get the default user provider name.
84
     *
85
     * @return string
86
     */
87
    public function getDefaultUserProvider()
88
    {
89
        return $this->app['config']['auth.defaults.provider'];
90
    }
91
}