| Path : /var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Native/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : //var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Native/SentinelBootstrapper.php |
<?php
/*
* Part of the Sentinel package.
*
* NOTICE OF LICENSE
*
* Licensed under the 3-clause BSD License.
*
* This source file is subject to the 3-clause BSD License that is
* bundled with this package in the LICENSE file.
*
* @package Sentinel
* @version 6.0.0
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2022, Cartalyst LLC
* @link https://cartalyst.com
*/
namespace Cartalyst\Sentinel\Native;
use InvalidArgumentException;
use Cartalyst\Sentinel\Sentinel;
use Illuminate\Events\Dispatcher;
use Cartalyst\Sentinel\Cookies\NativeCookie;
use Cartalyst\Sentinel\Hashing\NativeHasher;
use Symfony\Component\HttpFoundation\Request;
use Cartalyst\Sentinel\Sessions\NativeSession;
use Cartalyst\Sentinel\Checkpoints\ThrottleCheckpoint;
use Cartalyst\Sentinel\Roles\IlluminateRoleRepository;
use Cartalyst\Sentinel\Users\IlluminateUserRepository;
use Cartalyst\Sentinel\Checkpoints\ActivationCheckpoint;
use Cartalyst\Sentinel\Reminders\IlluminateReminderRepository;
use Cartalyst\Sentinel\Throttling\IlluminateThrottleRepository;
use Cartalyst\Sentinel\Activations\IlluminateActivationRepository;
use Cartalyst\Sentinel\Persistences\IlluminatePersistenceRepository;
class SentinelBootstrapper
{
/**
* Configuration.
*
* @var array
*/
protected $config;
/**
* The event dispatcher.
*
* @var \Illuminate\Contracts\Events\Dispatcher
*/
protected $dispatcher;
/**
* Constructor.
*
* @param array $config
*
* @return void
*/
public function __construct($config = null)
{
if (is_string($config)) {
$this->config = new ConfigRepository($config);
} else {
$this->config = $config ?: new ConfigRepository();
}
}
/**
* Creates a sentinel instance.
*
* @return \Cartalyst\Sentinel\Sentinel
*/
public function createSentinel()
{
$persistence = $this->createPersistence();
$users = $this->createUsers();
$roles = $this->createRoles();
$activations = $this->createActivations();
$dispatcher = $this->getEventDispatcher();
$sentinel = new Sentinel(
$persistence,
$users,
$roles,
$activations,
$dispatcher
);
$throttle = $this->createThrottling();
$ipAddress = $this->getIpAddress();
$checkpoints = $this->createCheckpoints($activations, $throttle, $ipAddress);
foreach ($checkpoints as $key => $checkpoint) {
$sentinel->addCheckpoint($key, $checkpoint);
}
$reminders = $this->createReminders($users);
$sentinel->setActivationRepository($activations);
$sentinel->setReminderRepository($reminders);
$sentinel->setThrottleRepository($throttle);
return $sentinel;
}
/**
* Creates a persistences repository.
*
* @return \Cartalyst\Sentinel\Persistences\IlluminatePersistenceRepository
*/
protected function createPersistence()
{
$session = $this->createSession();
$cookie = $this->createCookie();
$model = $this->config['persistences']['model'];
$single = $this->config['persistences']['single'];
$users = $this->config['users']['model'];
if (class_exists($users) && method_exists($users, 'setPersistencesModel')) {
forward_static_call_array([$users, 'setPersistencesModel'], [$model]);
}
return new IlluminatePersistenceRepository($session, $cookie, $model, $single);
}
/**
* Creates a session.
*
* @return \Cartalyst\Sentinel\Sessions\NativeSession
*/
protected function createSession()
{
return new NativeSession($this->config['session']);
}
/**
* Creates a cookie.
*
* @return \Cartalyst\Sentinel\Cookies\NativeCookie
*/
protected function createCookie()
{
return new NativeCookie($this->config['cookie']);
}
/**
* Creates a user repository.
*
* @return \Cartalyst\Sentinel\Users\IlluminateUserRepository
*/
protected function createUsers()
{
$hasher = $this->createHasher();
$model = $this->config['users']['model'];
$roles = $this->config['roles']['model'];
$persistences = $this->config['persistences']['model'];
if (class_exists($roles) && method_exists($roles, 'setUsersModel')) {
forward_static_call_array([$roles, 'setUsersModel'], [$model]);
}
if (class_exists($persistences) && method_exists($persistences, 'setUsersModel')) {
forward_static_call_array([$persistences, 'setUsersModel'], [$model]);
}
return new IlluminateUserRepository($hasher, $this->getEventDispatcher(), $model);
}
/**
* Creates a hasher.
*
* @return \Cartalyst\Sentinel\Hashing\NativeHasher
*/
protected function createHasher()
{
return new NativeHasher();
}
/**
* Creates a role repository.
*
* @return \Cartalyst\Sentinel\Roles\IlluminateRoleRepository
*/
protected function createRoles()
{
$model = $this->config['roles']['model'];
$users = $this->config['users']['model'];
if (class_exists($users) && method_exists($users, 'setRolesModel')) {
forward_static_call_array([$users, 'setRolesModel'], [$model]);
}
return new IlluminateRoleRepository($model);
}
/**
* Creates an activation repository.
*
* @return \Cartalyst\Sentinel\Activations\IlluminateActivationRepository
*/
protected function createActivations()
{
$model = $this->config['activations']['model'];
$expires = $this->config['activations']['expires'];
return new IlluminateActivationRepository($model, $expires);
}
/**
* Returns the client's ip address.
*
* @return string
*/
protected function getIpAddress()
{
$request = Request::createFromGlobals();
return $request->getClientIp();
}
/**
* Create an activation checkpoint.
*
* @param \Cartalyst\Sentinel\Activations\IlluminateActivationRepository $activations
*
* @return \Cartalyst\Sentinel\Checkpoints\ActivationCheckpoint
*/
protected function createActivationCheckpoint(IlluminateActivationRepository $activations)
{
return new ActivationCheckpoint($activations);
}
/**
* Create activation and throttling checkpoints.
*
* @param \Cartalyst\Sentinel\Activations\IlluminateActivationRepository $activations
* @param \Cartalyst\Sentinel\Throttling\IlluminateThrottleRepository $throttle
* @param string $ipAddress
*
* @throws \InvalidArgumentException
*
* @return array
*/
protected function createCheckpoints(IlluminateActivationRepository $activations, IlluminateThrottleRepository $throttle, $ipAddress)
{
$activeCheckpoints = $this->config['checkpoints'];
$activation = $this->createActivationCheckpoint($activations);
$throttle = $this->createThrottleCheckpoint($throttle, $ipAddress);
$checkpoints = [];
foreach ($activeCheckpoints as $checkpoint) {
if (! isset(${$checkpoint})) {
throw new InvalidArgumentException("Invalid checkpoint [{$checkpoint}] given.");
}
$checkpoints[$checkpoint] = ${$checkpoint};
}
return $checkpoints;
}
/**
* Create a throttle checkpoint.
*
* @param \Cartalyst\Sentinel\Throttling\IlluminateThrottleRepository $throttle
* @param string $ipAddress
*
* @return \Cartalyst\Sentinel\Checkpoints\ThrottleCheckpoint
*/
protected function createThrottleCheckpoint(IlluminateThrottleRepository $throttle, $ipAddress)
{
return new ThrottleCheckpoint($throttle, $ipAddress);
}
/**
* Create a throttling repository.
*
* @return \Cartalyst\Sentinel\Throttling\IlluminateThrottleRepository
*/
protected function createThrottling()
{
$model = $this->config['throttling']['model'];
foreach (['global', 'ip', 'user'] as $type) {
${"{$type}Interval"} = $this->config['throttling'][$type]['interval'];
${"{$type}Thresholds"} = $this->config['throttling'][$type]['thresholds'];
}
return new IlluminateThrottleRepository(
$model,
$globalInterval,
$globalThresholds,
$ipInterval,
$ipThresholds,
$userInterval,
$userThresholds
);
}
/**
* Returns the event dispatcher.
*
* @return \Illuminate\Contracts\Events\Dispatcher
*/
protected function getEventDispatcher()
{
if (! $this->dispatcher) {
$this->dispatcher = new Dispatcher();
}
return $this->dispatcher;
}
/**
* Create a reminder repository.
*
* @param \Cartalyst\Sentinel\Users\IlluminateUserRepository $users
*
* @return \Cartalyst\Sentinel\Reminders\IlluminateReminderRepository
*/
protected function createReminders(IlluminateUserRepository $users)
{
$model = $this->config['reminders']['model'];
$expires = $this->config['reminders']['expires'];
return new IlluminateReminderRepository($users, $model, $expires);
}
}