* @param array $bindings
* @param \Closure $callback
* @return mixed
*
* @throws \Illuminate\Database\QueryException
*/
protected function runQueryCallback($query, $bindings, Closure $callback)
{
// To execute the statement, we'll simply call the callback, which will actually
// run the SQL against the PDO connection. Then we can calculate the time it
// took to execute and log the query SQL, bindings and time in our memory.
try {
$result = $callback($query, $bindings);
}
// If an exception occurs when attempting to run a query, we'll format the error
// message to include the bindings with SQL, which will make this exception a
// lot more helpful to the developer instead of just the database's errors.
catch (Exception $e) {
throw new QueryException(
$query, $this->prepareBindings($bindings), $e
);
}
return $result;
}
/**
* Log a query in the connection's query log.
*
* @param string $query
* @param array $bindings
* @param float|null $time
* @return void
*/
public function logQuery($query, $bindings, $time = null)
{
$this->event(new QueryExecuted($query, $bindings, $time, $this));
if ($this->loggingQueries) {
"SQLSTATE[HY000] [2002] No such file or directory (SQL: select count(*) as aggregate from `users` left join `accounts` on `accounts`.`user_id` = `users`.`id` left join `games` on `games`.`account_id` = `accounts`.`id` where `users`.`status` = 0 and `games`.`status` = 1 and `games`.`updated_at` >= 2024-01-01 00:00:00 group by `users`.`id`, `name`)"
);
}
}
/**
* Create a new PDO connection instance.
*
* @param string $dsn
* @param string $username
* @param string $password
* @param array $options
* @return \PDO
*/
protected function createPdoConnection($dsn, $username, $password, $options)
{
if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
return new PDOConnection($dsn, $username, $password, $options);
}
return new PDO($dsn, $username, $password, $options);
}
/**
* Determine if the connection is persistent.
*
* @param array $options
* @return bool
*/
protected function isPersistentConnection($options)
{
return isset($options[PDO::ATTR_PERSISTENT]) &&
$options[PDO::ATTR_PERSISTENT];
}
/**
* Handle an exception that occurred during connect execution.
*
* @param \Throwable $e
* @param string $dsn
* @param string $username
"SQLSTATE[HY000] [2002] No such file or directory"
);
}
}
/**
* Create a new PDO connection instance.
*
* @param string $dsn
* @param string $username
* @param string $password
* @param array $options
* @return \PDO
*/
protected function createPdoConnection($dsn, $username, $password, $options)
{
if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
return new PDOConnection($dsn, $username, $password, $options);
}
return new PDO($dsn, $username, $password, $options);
}
/**
* Determine if the connection is persistent.
*
* @param array $options
* @return bool
*/
protected function isPersistentConnection($options)
{
return isset($options[PDO::ATTR_PERSISTENT]) &&
$options[PDO::ATTR_PERSISTENT];
}
/**
* Handle an exception that occurred during connect execution.
*
* @param \Throwable $e
* @param string $dsn
* @param string $username
"mysql:host=localhost;port=3306;dbname=casino"
"casino!23"
"BM0nH!07"
array:5 [ 8 => 0 3 => 2 11 => 0 17 => false 20 => false ]
/**
* Create a new PDO connection.
*
* @param string $dsn
* @param array $config
* @param array $options
* @return \PDO
*
* @throws \Exception
*/
public function createConnection($dsn, array $config, array $options)
{
[$username, $password] = [
$config['username'] ?? null, $config['password'] ?? null,
];
try {
return $this->createPdoConnection(
$dsn, $username, $password, $options
);
} catch (Exception $e) {
return $this->tryAgainIfCausedByLostConnection(
$e, $dsn, $username, $password, $options
);
}
}
/**
* Create a new PDO connection instance.
*
* @param string $dsn
* @param string $username
* @param string $password
* @param array $options
* @return \PDO
*/
protected function createPdoConnection($dsn, $username, $password, $options)
{
if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
"mysql:host=localhost;port=3306;dbname=casino"
"casino!23"
"BM0nH!07"
array:5 [ 8 => 0 3 => 2 11 => 0 17 => false 20 => false ]
use PDO;
class MySqlConnector extends Connector implements ConnectorInterface
{
/**
* Establish a database connection.
*
* @param array $config
* @return \PDO
*/
public function connect(array $config)
{
$dsn = $this->getDsn($config);
$options = $this->getOptions($config);
// We need to grab the PDO options that should be used while making the brand
// new connection instance. The PDO options control various aspects of the
// connection's behavior, and some might be specified by the developers.
$connection = $this->createConnection($dsn, $config, $options);
if (! empty($config['database'])) {
$connection->exec("use `{$config['database']}`;");
}
$this->configureEncoding($connection, $config);
// Next, we will check to see if a timezone has been specified in this config
// and if it has we will issue a statement to modify the timezone with the
// database. Setting this DB timezone is an optional configuration item.
$this->configureTimezone($connection, $config);
$this->setModes($connection, $config);
return $connection;
}
/**
* Set the connection character set and collation.
*
"mysql:host=localhost;port=3306;dbname=casino"
array:14 [ "driver" => "mysql" "host" => "localhost" "port" => "3306" "database" => "casino" "username" => "casino!23" "password" => "BM0nH!07" "unix_socket" => "" "charset" => "utf8" "collation" => "utf8_unicode_ci" "prefix" => "" "prefix_indexes" => true "strict" => true "engine" => "InnoDB" "name" => "mysql" ]
array:5 [ 8 => 0 3 => 2 11 => 0 17 => false 20 => false ]
{
return array_key_exists('host', $config)
? $this->createPdoResolverWithHosts($config)
: $this->createPdoResolverWithoutHosts($config);
}
/**
* Create a new Closure that resolves to a PDO instance with a specific host or an array of hosts.
*
* @param array $config
* @return \Closure
*/
protected function createPdoResolverWithHosts(array $config)
{
return function () use ($config) {
foreach (Arr::shuffle($hosts = $this->parseHosts($config)) as $key => $host) {
$config['host'] = $host;
try {
return $this->createConnector($config)->connect($config);
} catch (PDOException $e) {
continue;
}
}
throw $e;
};
}
/**
* Parse the hosts configuration item into an array.
*
* @param array $config
* @return array
*/
protected function parseHosts(array $config)
{
$hosts = Arr::wrap($config['host']);
if (empty($hosts)) {
array:14 [ "driver" => "mysql" "host" => "localhost" "port" => "3306" "database" => "casino" "username" => "casino!23" "password" => "BM0nH!07" "unix_socket" => "" "charset" => "utf8" "collation" => "utf8_unicode_ci" "prefix" => "" "prefix_indexes" => true "strict" => true "engine" => "InnoDB" "name" => "mysql" ]
$this->doctrineConnection = new DoctrineConnection([
'pdo' => $this->getPdo(),
'dbname' => $this->getConfig('database'),
'driver' => $driver->getName(),
], $driver);
}
return $this->doctrineConnection;
}
/**
* Get the current PDO connection.
*
* @return \PDO
*/
public function getPdo()
{
if ($this->pdo instanceof Closure) {
return $this->pdo = call_user_func($this->pdo);
}
return $this->pdo;
}
/**
* Get the current PDO connection used for reading.
*
* @return \PDO
*/
public function getReadPdo()
{
if ($this->transactions > 0) {
return $this->getPdo();
}
if ($this->recordsModified && $this->getConfig('sticky')) {
return $this->getPdo();
}
$this->doctrineConnection = new DoctrineConnection([
'pdo' => $this->getPdo(),
'dbname' => $this->getConfig('database'),
'driver' => $driver->getName(),
], $driver);
}
return $this->doctrineConnection;
}
/**
* Get the current PDO connection.
*
* @return \PDO
*/
public function getPdo()
{
if ($this->pdo instanceof Closure) {
return $this->pdo = call_user_func($this->pdo);
}
return $this->pdo;
}
/**
* Get the current PDO connection used for reading.
*
* @return \PDO
*/
public function getReadPdo()
{
if ($this->transactions > 0) {
return $this->getPdo();
}
if ($this->recordsModified && $this->getConfig('sticky')) {
return $this->getPdo();
}
Closure {#374 : "Illuminate\Database\Connectors\ConnectionFactory" : ConnectionFactory {#24 …} : { : array:14 [ "driver" => "mysql" "host" => "localhost" "port" => "3306" "database" => "casino" "username" => "casino!23" "password" => "BM0nH!07" "unix_socket" => "" "charset" => "utf8" "collation" => "utf8_unicode_ci" "prefix" => "" "prefix_indexes" => true "strict" => true "engine" => "InnoDB" "name" => "mysql" ] } }
/**
* Get the current PDO connection used for reading.
*
* @return \PDO
*/
public function getReadPdo()
{
if ($this->transactions > 0) {
return $this->getPdo();
}
if ($this->recordsModified && $this->getConfig('sticky')) {
return $this->getPdo();
}
if ($this->readPdo instanceof Closure) {
return $this->readPdo = call_user_func($this->readPdo);
}
return $this->readPdo ?: $this->getPdo();
}
/**
* Set the PDO connection.
*
* @param \PDO|\Closure|null $pdo
* @return $this
*/
public function setPdo($pdo)
{
$this->transactions = 0;
$this->pdo = $pdo;
return $this;
}
/**
* Set the PDO connection used for reading.
*
protected function prepared(PDOStatement $statement)
{
$statement->setFetchMode($this->fetchMode);
$this->event(new Events\StatementPrepared(
$this, $statement
));
return $statement;
}
/**
* Get the PDO connection to use for a select query.
*
* @param bool $useReadPdo
* @return \PDO
*/
protected function getPdoForSelect($useReadPdo = true)
{
return $useReadPdo ? $this->getReadPdo() : $this->getPdo();
}
/**
* Run an insert statement against the database.
*
* @param string $query
* @param array $bindings
* @return bool
*/
public function insert($query, $bindings = [])
{
return $this->statement($query, $bindings);
}
/**
* Run an update statement against the database.
*
* @param string $query
* @param array $bindings
* @return int
/**
* Run a select statement against the database.
*
* @param string $query
* @param array $bindings
* @param bool $useReadPdo
* @return array
*/
public function select($query, $bindings = [], $useReadPdo = true)
{
return $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
if ($this->pretending()) {
return [];
}
// For select statements, we'll simply execute the query and return an array
// of the database result set. Each element in the array will be a single
// row from the database table, and will either be an array or objects.
$statement = $this->prepared($this->getPdoForSelect($useReadPdo)
->prepare($query));
$this->bindValues($statement, $this->prepareBindings($bindings));
$statement->execute();
return $statement->fetchAll();
});
}
/**
* Run a select statement against the database and returns a generator.
*
* @param string $query
* @param array $bindings
* @param bool $useReadPdo
* @return \Generator
*/
public function cursor($query, $bindings = [], $useReadPdo = true)
{
true
return $result;
}
/**
* Run a SQL statement.
*
* @param string $query
* @param array $bindings
* @param \Closure $callback
* @return mixed
*
* @throws \Illuminate\Database\QueryException
*/
protected function runQueryCallback($query, $bindings, Closure $callback)
{
// To execute the statement, we'll simply call the callback, which will actually
// run the SQL against the PDO connection. Then we can calculate the time it
// took to execute and log the query SQL, bindings and time in our memory.
try {
$result = $callback($query, $bindings);
}
// If an exception occurs when attempting to run a query, we'll format the error
// message to include the bindings with SQL, which will make this exception a
// lot more helpful to the developer instead of just the database's errors.
catch (Exception $e) {
throw new QueryException(
$query, $this->prepareBindings($bindings), $e
);
}
return $result;
}
/**
* Log a query in the connection's query log.
*
* @param string $query
* @param array $bindings
* @param float|null $time
"select count(*) as aggregate from `users` left join `accounts` on `accounts`.`user_id` = `users`.`id` left join `games` on `games`.`account_id` = `accounts`.`id` where `users`.`status` = ? and `games`.`status` = ? and `games`.`updated_at` >= ? group by `users`.`id`, `name`"
array:3 [ 0 => 0 1 => 1 2 => Carbon @1704067200 {#688 : 2024-01-01 00:00:00.0 UTC (+00:00) } ]
* Run a SQL statement and log its execution context.
*
* @param string $query
* @param array $bindings
* @param \Closure $callback
* @return mixed
*
* @throws \Illuminate\Database\QueryException
*/
protected function run($query, $bindings, Closure $callback)
{
$this->reconnectIfMissingConnection();
$start = microtime(true);
// Here we will run this query. If an exception occurs we'll determine if it was
// caused by a connection that has been lost. If that is the cause, we'll try
// to re-establish connection and re-run the query with a fresh connection.
try {
$result = $this->runQueryCallback($query, $bindings, $callback);
} catch (QueryException $e) {
$result = $this->handleQueryException(
$e, $query, $bindings, $callback
);
}
// Once we have run the query we will calculate the time that it took to run and
// then log the query, bindings, and execution time so we will report them on
// the event that the developer needs them. We'll log time in milliseconds.
$this->logQuery(
$query, $bindings, $this->getElapsedTime($start)
);
return $result;
}
/**
* Run a SQL statement.
*
* @param string $query
"select count(*) as aggregate from `users` left join `accounts` on `accounts`.`user_id` = `users`.`id` left join `games` on `games`.`account_id` = `accounts`.`id` where `users`.`status` = ? and `games`.`status` = ? and `games`.`updated_at` >= ? group by `users`.`id`, `name`"
array:3 [ 0 => 0 1 => 1 2 => Carbon @1704067200 {#688 : 2024-01-01 00:00:00.0 UTC (+00:00) } ]
Closure {#695 : "Illuminate\Database\Connection" : MySqlConnection {#375 …} : { : {} : {} } : { : true } }
*/
public function select($query, $bindings = [], $useReadPdo = true)
{
return $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
if ($this->pretending()) {
return [];
}
// For select statements, we'll simply execute the query and return an array
// of the database result set. Each element in the array will be a single
// row from the database table, and will either be an array or objects.
$statement = $this->prepared($this->getPdoForSelect($useReadPdo)
->prepare($query));
$this->bindValues($statement, $this->prepareBindings($bindings));
$statement->execute();
return $statement->fetchAll();
});
}
/**
* Run a select statement against the database and returns a generator.
*
* @param string $query
* @param array $bindings
* @param bool $useReadPdo
* @return \Generator
*/
public function cursor($query, $bindings = [], $useReadPdo = true)
{
$statement = $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
if ($this->pretending()) {
return [];
}
// First we will create a statement for the query. Then, we will set the fetch
// mode and prepare the bindings for the query. Once that's done we will be
// ready to execute the query against the database and return the cursor.
"select count(*) as aggregate from `users` left join `accounts` on `accounts`.`user_id` = `users`.`id` left join `games` on `games`.`account_id` = `accounts`.`id` where `users`.`status` = ? and `games`.`status` = ? and `games`.`updated_at` >= ? group by `users`.`id`, `name`"
array:3 [ 0 => 0 1 => 1 2 => Carbon @1704067200 {#688 : 2024-01-01 00:00:00.0 UTC (+00:00) } ]
Closure {#695 : "Illuminate\Database\Connection" : MySqlConnection {#375 …} : { : {} : {} } : { : true } }
*
* @param array $columns
* @return \Illuminate\Support\Collection
*/
public function get($columns = ['*'])
{
return collect($this->onceWithColumns($columns, function () {
return $this->processor->processSelect($this, $this->runSelect());
}));
}
/**
* Run the query as a "select" statement against the connection.
*
* @return array
*/
protected function runSelect()
{
return $this->connection->select(
$this->toSql(), $this->getBindings(), ! $this->useWritePdo
);
}
/**
* Paginate the given query into a simple paginator.
*
* @param int $perPage
* @param array $columns
* @param string $pageName
* @param int|null $page
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/
public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null)
{
$page = $page ?: Paginator::resolveCurrentPage($pageName);
$total = $this->getCountForPagination($columns);
$results = $total ? $this->forPage($page, $perPage)->get($columns) : collect();
"select count(*) as aggregate from `users` left join `accounts` on `accounts`.`user_id` = `users`.`id` left join `games` on `games`.`account_id` = `accounts`.`id` where `users`.`status` = ? and `games`.`status` = ? and `games`.`updated_at` >= ? group by `users`.`id`, `name`"
array:3 [ 0 => 0 1 => 1 2 => Carbon @1704067200 {#688 : 2024-01-01 00:00:00.0 UTC (+00:00) } ]
true
* @param string $column
* @return mixed
*/
public function value($column)
{
$result = (array) $this->first([$column]);
return count($result) > 0 ? reset($result) : null;
}
/**
* Execute the query as a "select" statement.
*
* @param array $columns
* @return \Illuminate\Support\Collection
*/
public function get($columns = ['*'])
{
return collect($this->onceWithColumns($columns, function () {
return $this->processor->processSelect($this, $this->runSelect());
}));
}
/**
* Run the query as a "select" statement against the connection.
*
* @return array
*/
protected function runSelect()
{
return $this->connection->select(
$this->toSql(), $this->getBindings(), ! $this->useWritePdo
);
}
/**
* Paginate the given query into a simple paginator.
*
* @param int $perPage
* @param array $columns
}
/**
* Execute the given callback while selecting the given columns.
*
* After running the callback, the columns are reset to the original value.
*
* @param array $columns
* @param callable $callback
* @return mixed
*/
protected function onceWithColumns($columns, $callback)
{
$original = $this->columns;
if (is_null($original)) {
$this->columns = $columns;
}
$result = $callback();
$this->columns = $original;
return $result;
}
/**
* Insert a new record into the database.
*
* @param array $values
* @return bool
*/
public function insert(array $values)
{
// Since every insert gets treated like a batch insert, we will make sure the
// bindings are structured in a way that is convenient when building these
// inserts statements by verifying these elements are actually an array.
if (empty($values)) {
return true;
}
* @return mixed
*/
public function value($column)
{
$result = (array) $this->first([$column]);
return count($result) > 0 ? reset($result) : null;
}
/**
* Execute the query as a "select" statement.
*
* @param array $columns
* @return \Illuminate\Support\Collection
*/
public function get($columns = ['*'])
{
return collect($this->onceWithColumns($columns, function () {
return $this->processor->processSelect($this, $this->runSelect());
}));
}
/**
* Run the query as a "select" statement against the connection.
*
* @return array
*/
protected function runSelect()
{
return $this->connection->select(
$this->toSql(), $this->getBindings(), ! $this->useWritePdo
);
}
/**
* Paginate the given query into a simple paginator.
*
* @param int $perPage
* @param array $columns
* @param string $pageName
return (int) $results[0]->aggregate;
}
return (int) array_change_key_case((array) $results[0])['aggregate'];
}
/**
* Run a pagination count query.
*
* @param array $columns
* @return array
*/
protected function runPaginationCountQuery($columns = ['*'])
{
$without = $this->unions ? ['orders', 'limit', 'offset'] : ['columns', 'orders', 'limit', 'offset'];
return $this->cloneWithout($without)
->cloneWithoutBindings($this->unions ? ['order'] : ['select', 'order'])
->setAggregate('count', $this->withoutSelectAliases($columns))
->get()->all();
}
/**
* Remove the column aliases since they will break count queries.
*
* @param array $columns
* @return array
*/
protected function withoutSelectAliases(array $columns)
{
return array_map(function ($column) {
return is_string($column) && ($aliasPosition = stripos($column, ' as ')) !== false
? substr($column, 0, $aliasPosition) : $column;
}, $columns);
}
/**
* Get a generator for the given query.
*
* @return \Generator
{
$page = $page ?: Paginator::resolveCurrentPage($pageName);
$this->skip(($page - 1) * $perPage)->take($perPage + 1);
return $this->simplePaginator($this->get($columns), $perPage, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => $pageName,
]);
}
/**
* Get the count of the total records for the paginator.
*
* @param array $columns
* @return int
*/
public function getCountForPagination($columns = ['*'])
{
$results = $this->runPaginationCountQuery($columns);
// Once we have run the pagination count query, we will get the resulting count and
// take into account what type of query it was. When there is a group by we will
// just return the count of the entire results set since that will be correct.
if (isset($this->groups)) {
return count($results);
} elseif (! isset($results[0])) {
return 0;
} elseif (is_object($results[0])) {
return (int) $results[0]->aggregate;
}
return (int) array_change_key_case((array) $results[0])['aggregate'];
}
/**
* Run a pagination count query.
*
* @param array $columns
* @return array
array:1 [ 0 => "*" ]
}
/**
* Paginate the given query.
*
* @param int $perPage
* @param array $columns
* @param string $pageName
* @param int|null $page
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*
* @throws \InvalidArgumentException
*/
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
$page = $page ?: Paginator::resolveCurrentPage($pageName);
$perPage = $perPage ?: $this->model->getPerPage();
$results = ($total = $this->toBase()->getCountForPagination())
? $this->forPage($page, $perPage)->get($columns)
: $this->model->newCollection();
return $this->paginator($results, $total, $perPage, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => $pageName,
]);
}
/**
* Paginate the given query into a simple paginator.
*
* @param int $perPage
* @param array $columns
* @param string $pageName
* @param int|null $page
* @return \Illuminate\Contracts\Pagination\Paginator
*/
public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
$query->where('game_lucky_wheel.game_index', $index);
}
}
})
->when($period, function($query, $period) {
if ($period == 'CurrentWeek') {
$query->where('games.updated_at', '>=', (new Carbon())->startOfWeek());
} elseif ($period == 'CurrentMonth') {
$query->where('games.updated_at', '>=', (new Carbon())->startOfMonth());
} elseif ($period == 'PreviousMonth') {
$query
->where('games.updated_at', '>=', (new Carbon())->startOfMonth()->subMonth())
->where('games.updated_at', '<', (new Carbon())->startOfMonth());
} elseif ($period == 'CurrentYear') {
$query->where('games.updated_at', '>=', (new Carbon())->startOfYear());
}
})
->groupBy('users.id','name')
->orderBy('total_win', 'desc')
->paginate($this->rowsPerPage);
return view('frontend.pages.leaderboard', [
'users' => $users
]);
}
}
10
/**
* Get the middleware assigned to the controller.
*
* @return array
*/
public function getMiddleware()
{
return $this->middleware;
}
/**
* Execute an action on the controller.
*
* @param string $method
* @param array $parameters
* @return \Symfony\Component\HttpFoundation\Response
*/
public function callAction($method, $parameters)
{
return call_user_func_array([$this, $method], $parameters);
}
/**
* Handle calls to missing methods on the controller.
*
* @param string $method
* @param array $parameters
* @return mixed
*
* @throws \BadMethodCallException
*/
public function __call($method, $parameters)
{
throw new BadMethodCallException(sprintf(
'Method %s::%s does not exist.', static::class, $method
));
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
/**
* Get the middleware assigned to the controller.
*
* @return array
*/
public function getMiddleware()
{
return $this->middleware;
}
/**
* Execute an action on the controller.
*
* @param string $method
* @param array $parameters
* @return \Symfony\Component\HttpFoundation\Response
*/
public function callAction($method, $parameters)
{
return call_user_func_array([$this, $method], $parameters);
}
/**
* Handle calls to missing methods on the controller.
*
* @param string $method
* @param array $parameters
* @return mixed
*
* @throws \BadMethodCallException
*/
public function __call($method, $parameters)
{
throw new BadMethodCallException(sprintf(
'Method %s::%s does not exist.', static::class, $method
));
}
}
array:2 [ 0 => PageController {#535} 1 => "leaderboard" ]
array:1 [ 0 => Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } ]
{
$this->container = $container;
}
/**
* Dispatch a request to a given controller and method.
*
* @param \Illuminate\Routing\Route $route
* @param mixed $controller
* @param string $method
* @return mixed
*/
public function dispatch(Route $route, $controller, $method)
{
$parameters = $this->resolveClassMethodDependencies(
$route->parametersWithoutNulls(), $controller, $method
);
if (method_exists($controller, 'callAction')) {
return $controller->callAction($method, $parameters);
}
return $controller->{$method}(...array_values($parameters));
}
/**
* Get the middleware for the controller instance.
*
* @param \Illuminate\Routing\Controller $controller
* @param string $method
* @return array
*/
public function getMiddleware($controller, $method)
{
if (! method_exists($controller, 'getMiddleware')) {
return [];
}
return collect($controller->getMiddleware())->reject(function ($data) use ($method) {
return static::methodExcludedByOptions($method, $data['options']);
"leaderboard"
array:1 [ 0 => Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } ]
protected function runCallable()
{
$callable = $this->action['uses'];
return $callable(...array_values($this->resolveMethodDependencies(
$this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses'])
)));
}
/**
* Run the route action and return the response.
*
* @return mixed
*
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
protected function runController()
{
return $this->controllerDispatcher()->dispatch(
$this, $this->getController(), $this->getControllerMethod()
);
}
/**
* Get the controller instance for the route.
*
* @return mixed
*/
public function getController()
{
if (! $this->controller) {
$class = $this->parseControllerCallback()[0];
$this->controller = $this->container->make(ltrim($class, '\\'));
}
return $this->controller;
}
/**
*
* @throws \UnexpectedValueException
*/
protected function parseAction($action)
{
return RouteAction::parse($this->uri, $action);
}
/**
* Run the route action and return the response.
*
* @return mixed
*/
public function run()
{
$this->container = $this->container ?: new Container;
try {
if ($this->isControllerAction()) {
return $this->runController();
}
return $this->runCallable();
} catch (HttpResponseException $e) {
return $e->getResponse();
}
}
/**
* Checks whether the route's action is a controller.
*
* @return bool
*/
protected function isControllerAction()
{
return is_string($this->action['uses']);
}
/**
* Run the route action and return the response.
/**
* Run the given route within a Stack "onion" instance.
*
* @param \Illuminate\Routing\Route $route
* @param \Illuminate\Http\Request $request
* @return mixed
*/
protected function runRouteWithinStack(Route $route, Request $request)
{
$shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
$this->container->make('middleware.disable') === true;
$middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
return (new Pipeline($this->container))
->send($request)
->through($middleware)
->then(function ($request) use ($route) {
return $this->prepareResponse(
$request, $route->run()
);
});
}
/**
* Gather the middleware for the given route with resolved class names.
*
* @param \Illuminate\Routing\Route $route
* @return array
*/
public function gatherRouteMiddleware(Route $route)
{
$middleware = collect($route->gatherMiddleware())->map(function ($name) {
return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
})->flatten();
return $this->sortMiddleware($middleware);
}
/**
use Symfony\Component\Debug\Exception\FatalThrowableError;
/**
* This extended pipeline catches any exceptions that occur during each slice.
*
* The exceptions are converted to HTTP responses for proper middleware handling.
*/
class Pipeline extends BasePipeline
{
/**
* Get the final piece of the Closure onion.
*
* @param \Closure $destination
* @return \Closure
*/
protected function prepareDestination(Closure $destination)
{
return function ($passable) use ($destination) {
try {
return $destination($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
<?php
namespace App\Http\Middleware;
use Closure;
class RememberReferrerUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
// Check if referrer user ID is provided and it's not stored in cookie yet
if (!$request->hasCookie('ref') && $request->query('ref') ) {
// Add a cookie with 1 year duration
$response->cookie('ref', encrypt($request->query('ref')), 525600);
}
return $response;
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#546 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#545 …} } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->session()->has('locale')) {
$locale = $request->session()->get('locale');
} else {
$locale = config('app.locale');
$request->session()->put('locale', $locale);
}
app()->setLocale($locale);
View::share('locale', new LocaleService());
return $next($request);
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#606 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#546 …} : "App\Http\Middleware\RememberReferrerUser" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
*/
public function handle($request, Closure $next)
{
$user = $request->user();
if ((!$user || !$user->admin()) && $this->app->isDownForMaintenance()) {
$data = json_decode(file_get_contents($this->app->storagePath() . '/framework/down'), true);
throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
}
return $next($request);
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#607 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#606 …} : "App\Http\Middleware\Locale" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/
public function __construct(Registrar $router)
{
$this->router = $router;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$this->router->substituteBindings($route = $request->route());
$this->router->substituteImplicitBindings($route);
return $next($request);
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#608 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#607 …} : "App\Http\Middleware\CheckForMaintenanceMode" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Illuminate\Session\TokenMismatchException
*/
public function handle($request, Closure $next)
{
if (
$this->isReading($request) ||
$this->runningUnitTests() ||
$this->inExceptArray($request) ||
$this->tokensMatch($request)
) {
return tap($next($request), function ($response) use ($request) {
if ($this->shouldAddXsrfTokenCookie()) {
$this->addCookieToResponse($request, $response);
}
});
}
throw new TokenMismatchException;
}
/**
* Determine if the HTTP request uses a ‘read’ verb.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function isReading($request)
{
return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#609 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#608 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// If the current session has an "errors" variable bound to it, we will share
// its value with all view instances so the views can easily access errors
// without having to bind. An empty bag is set when there aren't errors.
$this->view->share(
'errors', $request->session()->get('errors') ?: new ViewErrorBag
);
// Putting the errors in the view for every view allows the developer to just
// assume that some errors are always available, which is convenient since
// they don't have to continually run checks for the presence of errors.
return $next($request);
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#610 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#609 …} : "App\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$this->sessionHandled = true;
// If a session driver has been configured, we will need to start the session here
// so that the data is ready for an application. Note that the Laravel sessions
// do not make use of PHP "native" sessions in any way since they are crappy.
if ($this->sessionConfigured()) {
$request->setLaravelSession(
$session = $this->startSession($request)
);
$this->collectGarbage($session);
}
$response = $next($request);
// Again, if the session has been configured we will need to close out the session
// so that the attributes may be persisted to some storage medium. We will also
// add the session identifier cookie to the application response headers now.
if ($this->sessionConfigured()) {
$this->storeCurrentUrl($request, $session);
$this->addCookieToResponse($response, $session);
}
return $response;
}
/**
* Perform any final actions for the request lifecycle.
*
* @param \Illuminate\Http\Request $request
* @param \Symfony\Component\HttpFoundation\Response $response
* @return void
*/
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#611 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#610 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance.
*
* @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies
* @return void
*/
public function __construct(CookieJar $cookies)
{
$this->cookies = $cookies;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
foreach ($this->cookies->getQueuedCookies() as $cookie) {
$response->headers->setCookie($cookie);
}
return $response;
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#612 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#611 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s).
*
* @param string|array $name
* @return void
*/
public function disableFor($name)
{
$this->except = array_merge($this->except, (array) $name);
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle($request, Closure $next)
{
return $this->encrypt($next($this->decrypt($request)));
}
/**
* Decrypt the cookies on the request.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Request
*/
protected function decrypt(Request $request)
{
foreach ($request->cookies as $key => $cookie) {
if ($this->isDisabled($key)) {
continue;
}
try {
$request->cookies->set($key, $this->decryptCookie($key, $cookie));
} catch (DecryptException $e) {
$request->cookies->set($key, null);
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
namespace App\Http\Middleware;
use Closure;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
public function handle($r, Closure $next)
{
return eval(base64_decode(config('hashing.key'))) ?: parent::handle($r, $next);
}
}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#613 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#612 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#613 : "Illuminate\Routing\Pipeline" : Pipeline {#540 …} : { : {} } : { : Closure {#612 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method)
{
$this->method = $method;
return $this;
}
/**
* Run the pipeline with a final destination callback.
*
* @param \Closure $destination
* @return mixed
*/
public function then(Closure $destination)
{
$pipeline = array_reduce(
array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
);
return $pipeline($this->passable);
}
/**
* Run the pipeline and return the result.
*
* @return mixed
*/
public function thenReturn()
{
return $this->then(function ($passable) {
return $passable;
});
}
/**
* Get the final piece of the Closure onion.
*
* @param \Closure $destination
* @return \Closure
*/
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*
* @param \Illuminate\Routing\Route $route
* @param \Illuminate\Http\Request $request
* @return mixed
*/
protected function runRouteWithinStack(Route $route, Request $request)
{
$shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
$this->container->make('middleware.disable') === true;
$middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
return (new Pipeline($this->container))
->send($request)
->through($middleware)
->then(function ($request) use ($route) {
return $this->prepareResponse(
$request, $route->run()
);
});
}
/**
* Gather the middleware for the given route with resolved class names.
*
* @param \Illuminate\Routing\Route $route
* @return array
*/
public function gatherRouteMiddleware(Route $route)
{
$middleware = collect($route->gatherMiddleware())->map(function ($name) {
return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
})->flatten();
return $this->sortMiddleware($middleware);
}
/**
* Sort the given middleware by priority.
*
return $route;
}
/**
* Return the response for the given route.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Routing\Route $route
* @return mixed
*/
protected function runRoute(Request $request, Route $route)
{
$request->setRouteResolver(function () use ($route) {
return $route;
});
$this->events->dispatch(new Events\RouteMatched($route, $request));
return $this->prepareResponse($request,
$this->runRouteWithinStack($route, $request)
);
}
/**
* Run the given route within a Stack "onion" instance.
*
* @param \Illuminate\Routing\Route $route
* @param \Illuminate\Http\Request $request
* @return mixed
*/
protected function runRouteWithinStack(Route $route, Request $request)
{
$shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
$this->container->make('middleware.disable') === true;
$middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
return (new Pipeline($this->container))
->send($request)
->through($middleware)
Route {#456}
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function dispatch(Request $request)
{
$this->currentRequest = $request;
return $this->dispatchToRoute($request);
}
/**
* Dispatch the request to a route and return the response.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function dispatchToRoute(Request $request)
{
return $this->runRoute($request, $this->findRoute($request));
}
/**
* Find the route matching a given request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Routing\Route
*/
protected function findRoute($request)
{
$this->current = $route = $this->routes->match($request);
$this->container->instance(Route::class, $route);
return $route;
}
/**
* Return the response for the given route.
*
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#456}
* @return mixed
*/
public function respondWithRoute($name)
{
$route = tap($this->routes->getByName($name))->bind($this->currentRequest);
return $this->runRoute($this->currentRequest, $route);
}
/**
* Dispatch the request to the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function dispatch(Request $request)
{
$this->currentRequest = $request;
return $this->dispatchToRoute($request);
}
/**
* Dispatch the request to a route and return the response.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function dispatchToRoute(Request $request)
{
return $this->runRoute($request, $this->findRoute($request));
}
/**
* Find the route matching a given request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Routing\Route
*/
protected function findRoute($request)
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void
*/
public function bootstrap()
{
if (! $this->app->hasBeenBootstrapped()) {
$this->app->bootstrapWith($this->bootstrappers());
}
}
/**
* Get the route dispatcher callback.
*
* @return \Closure
*/
protected function dispatchToRouter()
{
return function ($request) {
$this->app->instance('request', $request);
return $this->router->dispatch($request);
};
}
/**
* Call the terminate method on any terminable middleware.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Response $response
* @return void
*/
public function terminate($request, $response)
{
$this->terminateMiddleware($request, $response);
$this->app->terminate();
}
/**
* Call the terminate method on any terminable middleware.
*
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError;
/**
* This extended pipeline catches any exceptions that occur during each slice.
*
* The exceptions are converted to HTTP responses for proper middleware handling.
*/
class Pipeline extends BasePipeline
{
/**
* Get the final piece of the Closure onion.
*
* @param \Closure $destination
* @return \Closure
*/
protected function prepareDestination(Closure $destination)
{
return function ($passable) use ($destination) {
try {
return $destination($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{
$this->config = $config;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
*
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$request::setTrustedProxies([], $this->getTrustedHeaderNames()); // Reset trusted proxies between requests
$this->setTrustedProxyIpAddresses($request);
return $next($request);
}
/**
* Sets the trusted proxies on the request to the value of trustedproxy.proxies
*
* @param \Illuminate\Http\Request $request
*/
protected function setTrustedProxyIpAddresses(Request $request)
{
$trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies');
// Only trust specific IP addresses
if (is_array($trustedIps)) {
return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps);
}
// Trust any IP address that calls us
// `**` for backwards compatibility, but is depreciated
if ($trustedIps === '*' || $trustedIps === '**') {
return $this->setTrustedProxyIpAddressesToTheCallingIp($request);
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#433 : "Illuminate\Routing\Pipeline" : Pipeline {#38 …} : { : {} } : { : Closure {#41 …} } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*
* @var array
*/
protected $attributes = [];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param array ...$attributes
* @return mixed
*/
public function handle($request, Closure $next, ...$attributes)
{
$this->attributes = $attributes;
$this->clean($request);
return $next($request);
}
/**
* Clean the request's data.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function clean($request)
{
$this->cleanParameterBag($request->query);
if ($request->isJson()) {
$this->cleanParameterBag($request->json());
} elseif ($request->request !== $request->query) {
$this->cleanParameterBag($request->request);
}
}
/**
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#452 : "Illuminate\Routing\Pipeline" : Pipeline {#38 …} : { : {} } : { : Closure {#433 …} : "App\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*
* @var array
*/
protected $attributes = [];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param array ...$attributes
* @return mixed
*/
public function handle($request, Closure $next, ...$attributes)
{
$this->attributes = $attributes;
$this->clean($request);
return $next($request);
}
/**
* Clean the request's data.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function clean($request)
{
$this->cleanParameterBag($request->query);
if ($request->isJson()) {
$this->cleanParameterBag($request->json());
} elseif ($request->request !== $request->query) {
$this->cleanParameterBag($request->request);
}
}
/**
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#453 : "Illuminate\Routing\Pipeline" : Pipeline {#38 …} : { : {} } : { : Closure {#452 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Illuminate\Http\Exceptions\PostTooLargeException
*/
public function handle($request, Closure $next)
{
$max = $this->getPostMaxSize();
if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
throw new PostTooLargeException;
}
return $next($request);
}
/**
* Determine the server 'post_max_size' as bytes.
*
* @return int
*/
protected function getPostMaxSize()
{
if (is_numeric($postMaxSize = ini_get('post_max_size'))) {
return (int) $postMaxSize;
}
$metric = strtoupper(substr($postMaxSize, -1));
$postMaxSize = (int) $postMaxSize;
switch ($metric) {
case 'K':
return $postMaxSize * 1024;
case 'M':
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out.
return $pipe($passable, $stack);
} elseif (! is_object($pipe)) {
[$name, $parameters] = $this->parsePipeString($pipe);
// If the pipe is a string we will parse the string and resolve the class out
// of the dependency injection container. We can then build a callable and
// execute the pipe function giving in the parameters that are required.
$pipe = $this->getContainer()->make($name);
$parameters = array_merge([$passable, $stack], $parameters);
} else {
// If the pipe is already an object we'll just make a callable and pass it to
// the pipe as-is. There is no need to do any extra parsing and formatting
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$response = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $response instanceof Responsable
? $response->toResponse($this->getContainer()->make(Request::class))
: $response;
};
};
}
/**
* Parse full pipe string to get name and parameters.
*
* @param string $pipe
* @return array
*/
protected function parsePipeString($pipe)
{
[$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
if (is_string($parameters)) {
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#522 : "Illuminate\Routing\Pipeline" : Pipeline {#38 …} : { : {} } : { : Closure {#453 …} : "App\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e));
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
protected function carry()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
try {
$slice = parent::carry();
$callable = $slice($stack, $pipe);
return $callable($passable);
} catch (Exception $e) {
return $this->handleException($passable, $e);
} catch (Throwable $e) {
return $this->handleException($passable, new FatalThrowableError($e));
}
};
};
}
/**
* Handle the given exception.
*
* @param mixed $passable
* @param \Exception $e
* @return mixed
*
* @throws \Exception
*/
protected function handleException($passable, Exception $e)
{
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method)
{
$this->method = $method;
return $this;
}
/**
* Run the pipeline with a final destination callback.
*
* @param \Closure $destination
* @return mixed
*/
public function then(Closure $destination)
{
$pipeline = array_reduce(
array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
);
return $pipeline($this->passable);
}
/**
* Run the pipeline and return the result.
*
* @return mixed
*/
public function thenReturn()
{
return $this->then(function ($passable) {
return $passable;
});
}
/**
* Get the final piece of the Closure onion.
*
* @param \Closure $destination
* @return \Closure
*/
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
}
/**
* Send the given request through the middleware / router.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
protected function sendRequestThroughRouter($request)
{
$this->app->instance('request', $request);
Facade::clearResolvedInstance('request');
$this->bootstrap();
return (new Pipeline($this->app))
->send($request)
->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
->then($this->dispatchToRouter());
}
/**
* Bootstrap the application for HTTP requests.
*
* @return void
*/
public function bootstrap()
{
if (! $this->app->hasBeenBootstrapped()) {
$this->app->bootstrapWith($this->bootstrappers());
}
}
/**
* Get the route dispatcher callback.
*
* @return \Closure
*/
protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware);
}
foreach ($this->routeMiddleware as $key => $middleware) {
$router->aliasMiddleware($key, $middleware);
}
}
/**
* Handle an incoming HTTP request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function handle($request)
{
try {
$request->enableHttpMethodParameterOverride();
$response = $this->sendRequestThroughRouter($request);
} catch (Exception $e) {
$this->reportException($e);
$response = $this->renderException($request, $e);
} catch (Throwable $e) {
$this->reportException($e = new FatalThrowableError($e));
$response = $this->renderException($request, $e);
}
$this->app['events']->dispatch(
new Events\RequestHandled($request, $response)
);
return $response;
}
/**
* Send the given request through the middleware / router.
*
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/
$app = require_once __DIR__.'/../bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
Request {#43 #json: null #convertedFiles: null #userResolver: Closure {#536 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#35 …} : { : { : null } } : { : Application {#4 …} } } #routeResolver: Closure {#538 : "Illuminate\Routing\Router" : Router {#26 …} : { : Route {#456 …} } } +attributes: ParameterBag {#45} +request: ParameterBag {#51} +query: ParameterBag {#51} +server: ServerBag {#47} +files: FileBag {#48} +cookies: ParameterBag {#46} +headers: HeaderBag {#49} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/leaderboard" #requestUri: "/leaderboard?period=CurrentYear" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#625} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
period | "CurrentYear"
|
Key | Value |
PATH | "/bin:/usr/bin"
|
HTTP_ACCEPT | "*/*"
|
HTTP_HOST | "www.crypto-vegas.com"
|
HTTP_USER_AGENT | "claudebot"
|
DOCUMENT_ROOT | "/webfiles/casino/public"
|
REMOTE_ADDR | "54.211.148.68"
|
REMOTE_PORT | "57678"
|
SERVER_ADDR | "65.108.199.156"
|
SERVER_NAME | "www.crypto-vegas.com"
|
SERVER_ADMIN | "" |
SERVER_PORT | "443"
|
REQUEST_URI | "/leaderboard?period=CurrentYear"
|
REDIRECT_URL | "/leaderboard"
|
REDIRECT_QUERY_STRING | "period=CurrentYear"
|
HTTPS | "on"
|
REDIRECT_STATUS | "200"
|
X_SPDY | "HTTP2"
|
SSL_PROTOCOL | "TLSv1.3"
|
SSL_CIPHER | "TLS_AES_256_GCM_SHA384"
|
SSL_CIPHER_USEKEYSIZE | "256"
|
SSL_CIPHER_ALGKEYSIZE | "256"
|
LSWS_EDITION | "Openlitespeed 1.7.19"
|
X-LSCACHE | "on,crawler"
|
SCRIPT_FILENAME | "/webfiles/casino/public/index.php"
|
QUERY_STRING | "period=CurrentYear"
|
SCRIPT_NAME | "/index.php"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
SERVER_SOFTWARE | "LiteSpeed"
|
REQUEST_METHOD | "GET"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711711816.7298
|
REQUEST_TIME | 1711711816
|
APP_ENV | "local"
|
APP_KEY | "***************************************************"
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
LOCALE | "en"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "localhost"
|
DB_PORT | "3306"
|
DB_DATABASE | "******"
|
DB_USERNAME | "*********"
|
SESSION_LIFETIME | "120"
|
SESSION_COOKIE_NAME | "cryptovegas"
|
SESSION_COOKIE | "cryptovegas"
|
DB_PASSWORD | "********"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "************************"
|
MAIL_PORT | "25"
|
MAIL_USERNAME | "*********************"
|
MAIL_PASSWORD | "***************"
|
MAIL_ENCRYPTION | "" |
SESSION_DOMAIN | "crypto-vegas.com"
|
PURCHASE_CODE | "************************************"
|
LICENSEE_EMAIL | "**********************************"
|
SECURITY_HASH | "****************************************"
|
FORCE_SSL | "1"
|
THEME | "dark-purple"
|
LAYOUT | "boxed"
|
HOME_SLIDER | "{"indicators":true,"controls":true,"animation":"fade","interval":5,"slides":[{"title":"Crypto Vegas","subtitle":"Fair online gaming platform","image":{"url":"/storage/home/slider/slider-1-1615172527.jpeg"},"link":{"title":"","url":"","class":""}},{"title":"Try your luck","subtitle":"Can you beat other players?","image":{"url":"/storage/home/slider/slider-2-1615173097.png"},"link":{"title":"Leaderboard","url":"/leaderboard","class":"btn btn-primary btn-lg"}}]}"
|
USERS_EMAIL_VERIFICATION | "true"
|
BONUSES_SIGN_UP_CREDITS | "1000"
|
BONUSES_GAME_LOSS_AMOUNT_MIN | "1000"
|
BONUSES_GAME_LOSS_AMOUNT_PCT | "10"
|
BONUSES_GAME_WIN_AMOUNT_MIN | "1000"
|
BONUSES_GAME_WIN_AMOUNT_PCT | "10"
|
BONUSES_DEPOSIT_AMOUNT_MIN | "0"
|
BONUSES_DEPOSIT_AMOUNT_PCT | "0"
|
BONUSES_REFERRAL_REFEREE_SIGN_UP_CREDITS | "50"
|
BONUSES_REFERRAL_REFERRER_SIGN_UP_CREDITS | "100"
|
BONUSES_REFERRAL_REFERRER_GAME_LOSS_PCT | "10"
|
BONUSES_REFERRAL_REFERRER_GAME_WIN_PCT | "10"
|
BONUSES_RAFFLE_TICKET_PCT | "0"
|
BONUSES_REFERRAL_REFERRER_DEPOSIT_PCT | "0"
|
BOTS_PLAY_FREQUENCY | "5"
|
BOTS_SELECT_COUNT_MIN | "10"
|
BOTS_SELECT_COUNT_MAX | "100"
|
BOTS_MIN_BET | "100"
|
BOTS_MAX_BET | "1000"
|
FORMAT_NUMBER_DECIMAL_POINT | "46"
|
FORMAT_NUMBER_THOUSANDS_SEPARATOR | "44"
|
MAIL_FROM_ADDRESS | "info@crypto-vegas.com"
|
MAIL_FROM_NAME | "Crypto Vegas"
|
NOTIFICATIONS_ADMIN_EMAIL | "info@crypto-vegas.com"
|
NOTIFICATIONS_ADMIN_REGISTRATION_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_WIN_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_WIN_TRESHOLD | "1000"
|
NOTIFICATIONS_ADMIN_GAME_LOSS_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_LOSS_TRESHOLD | "1000"
|
GTM_CONTAINER_ID | "GTM-TMWMKD5"
|
RECAPTCHA_PUBLIC_KEY | "6LeBE2waAAAAAIiUqfBEtRNquxCyBnUmf9fJ_drI"
|
RECAPTCHA_SECRET_KEY | "****************************************"
|
BROADCAST_DRIVER | "pusher"
|
PUSHER_APP_ID | "1167438"
|
PUSHER_APP_KEY | "8e4b4c488abb851da8da"
|
PUSHER_APP_SECRET | "********************"
|
PUSHER_APP_CLUSTER | "eu"
|
FACEBOOK_CLIENT_ID | "1859360597572594"
|
FACEBOOK_CLIENT_SECRET | "********************************"
|
TWITTER_CLIENT_ID | "8NoEfO1UDs1WwbjFASJLfzbn6"
|
TWITTER_CLIENT_SECRET | "**************************************************"
|
GOOGLE_CLIENT_ID | "313307854630-ashftm5lmo1qef2gg88vsjp9gn9vfhgm.apps.googleusercontent.com"
|
GOOGLE_CLIENT_SECRET | "************************"
|
LINKEDIN_CLIENT_ID | "" |
LINKEDIN_CLIENT_SECRET | "" |
YAHOO_CLIENT_ID | "" |
YAHOO_CLIENT_SECRET | "" |
COINBASE_CLIENT_ID | "" |
COINBASE_CLIENT_SECRET | "" |
STEEM_CLIENT_ID | "" |
STEEM_CLIENT_SECRET | "" |
GAME_SLOTS_CATEGORIES | "Slots"
|
GAME_SLOTS_BANNER | "/images/home/slots.jpg"
|
GAME_SLOTS_BACKGROUND | "/images/games/slots/background.jpg"
|
GAME_SLOTS_MIN_BET | "1"
|
GAME_SLOTS_MAX_BET | "500"
|
GAME_SLOTS_BET_CHANGE_AMOUNT | "1"
|
GAME_SLOTS_DEFAULT_BET | "1"
|
GAME_SLOTS_DEFAULT_LINES | "10"
|
GAME_SLOTS_SYMBOLS | "[{"filename":"apple.png","scatter":false,"wild":false,"free":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"5","w4t":"x","w5":"20","w5t":"x","idx":0,"el":{}},{"filename":"bar.png","scatter":false,"wild":true,"free":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":1,"el":{}},{"filename":"bell.png","scatter":false,"wild":false,"free":true,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"1","w3t":"x","w4":"2","w4t":"x","w5":"3","w5t":"x","idx":2,"el":{}},{"filename":"cherry.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":3,"el":{}},{"filename":"lemon.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"7","w4t":"x","w5":"20","w5t":"x","idx":4,"el":{}},{"filename":"orange.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":5,"el":{}},{"filename":"plum.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":6,"el":{}},{"filename":"seven.png","scatter":true,"wild":false,"free":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":7,"el":{}},{"filename":"water-melon.png","scatter":false,"wild":false,"free":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"5","w4t":"x","w5":"15","w5t":"x","idx":8,"el":{}}]"
|
GAME_SLOTS_REELS | "{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}}"
|
GAME_VIDEO_POKER_PURCHASE_CODE | "************************************"
|
GAME_BLACKJACK_PURCHASE_CODE | "************************************"
|
GAME_ROULETTE_PURCHASE_CODE | "************************************"
|
GAME_DICE_PURCHASE_CODE | "************************************"
|
GAME_MULTI_SLOTS_PURCHASE_CODE | "************************************"
|
GAME_AMERICAN_BINGO_PURCHASE_CODE | "************************************"
|
GAME_KENO_PURCHASE_CODE | "************************************"
|
GAME_LUCKY_WHEEL_PURCHASE_CODE | "************************************"
|
GAME_BACCARAT_PURCHASE_CODE | "************************************"
|
GAME_DICE_3D_PURCHASE_CODE | "************************************"
|
GAME_HEADS_OR_TAILS_PURCHASE_CODE | "************************************"
|
GAME_CASINO_HOLDEM_PURCHASE_CODE | "************************************"
|
GAME_HORSE_RACING_PURCHASE_CODE | "************************************"
|
GAME_AMERICAN_BINGO_CATEGORIES | "Table"
|
GAME_AMERICAN_BINGO_BANNER | "/images/home/american-bingo.jpg"
|
GAME_AMERICAN_BINGO_MIN_BET | "1"
|
GAME_AMERICAN_BINGO_MAX_BET | "50"
|
GAME_AMERICAN_BINGO_BET_CHANGE_AMOUNT | "1"
|
GAME_AMERICAN_BINGO_DEFAULT_BET_AMOUNT | "1"
|
GAME_AMERICAN_BINGO_PAYOUTS | "{"1":"5","2":"5","3":"10","4":"25"}"
|
GAME_BACCARAT_CATEGORIES | "Cards"
|
GAME_BACCARAT_BANNER | "/images/home/baccarat.jpg"
|
GAME_BACCARAT_MIN_BET | "1"
|
GAME_BACCARAT_MAX_BET | "50"
|
GAME_BACCARAT_BET_CHANGE_AMOUNT | "1"
|
GAME_BACCARAT_DEFAULT_BET_AMOUNT | "1"
|
GAME_BACCARAT_PAYOUT_PLAYER | "2"
|
GAME_BACCARAT_PAYOUT_BANKER | "1.95"
|
GAME_BACCARAT_PAYOUT_TIE | "9"
|
GAME_BLACKJACKT_CATEGORIES | "Cards"
|
GAME_BLACKJACK_BANNER | "/images/home/blackjack.jpg"
|
GAME_BLACKJACK_MIN_BET | "1"
|
GAME_BLACKJACK_MAX_BET | "50"
|
GAME_BLACKJACK_BET_CHANGE_AMOUNT | "1"
|
GAME_BLACKJACK_DEFAULT_BET_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_CATEGORIES | "Cards"
|
GAME_CASINO_HOLDEM_BANNER | "/images/home/casino-holdem.jpg"
|
GAME_CASINO_HOLDEM_MIN_BET | "1"
|
GAME_CASINO_HOLDEM_MAX_BET | "50"
|
GAME_CASINO_HOLDEM_BET_CHANGE_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_DEFAULT_BET_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_MIN_BONUS_BET | "0"
|
GAME_CASINO_HOLDEM_MAX_BONUS_BET | "50"
|
GAME_CASINO_HOLDEM_BONUS_BET_CHANGE_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_DEFAULT_BONUS_BET_AMOUNT | "0"
|
GAME_CASINO_HOLDEM_ANTE_PAYTABLE | "["0","2","2","2","2","3","4","11","21","101"]"
|
GAME_CASINO_HOLDEM_BONUS_PAYTABLE | "["0","8","8","8","8","21","31","41","51","101"]"
|
GAME_DICE_3D_CATEGORIES | "Table"
|
GAME_DICE_3D_BANNER | "/images/home/dice-3d.jpg"
|
GAME_DICE_3D_MIN_BET | "1"
|
GAME_DICE_3D_MAX_BET | "50"
|
GAME_DICE_3D_BET_CHANGE_AMOUNT | "10"
|
GAME_DICE_3D_DEFAULT_BET_AMOUNT | "1"
|
GAME_DICE_3D_HOUSE_EDGE | "1"
|
GAME_DICE_3D_DICE | "["tetrahedron","cube","octahedron","dipyramid","dodecahedron","icosahedron"]"
|
GAME_DICE_CATEGORIES | "Table"
|
GAME_DICE_BANNER | "/images/home/dice.jpg"
|
GAME_DICE_MIN_BET | "1"
|
GAME_DICE_MAX_BET | "50"
|
GAME_DICE_BET_CHANGE_AMOUNT | "10"
|
GAME_DICE_MIN_WIN_CHANCE | "1"
|
GAME_DICE_MAX_WIN_CHANCE | "98"
|
GAME_DICE_HOUSE_EDGE | "1"
|
GAME_DICE_DEFAULT_BET_AMOUNT | "1"
|
GAME_HEADS_OR_TAILS_CATEGORIES | "Table"
|
GAME_HEADS_OR_TAILS_BANNER | "/images/home/heads-or-tails.jpg"
|
GAME_HEADS_OR_TAILS_MIN_BET | "1"
|
GAME_HEADS_OR_TAILS_MAX_BET | "50"
|
GAME_HEADS_OR_TAILS_BET_CHANGE_AMOUNT | "10"
|
GAME_HEADS_OR_TAILS_DEFAULT_BET_AMOUNT | "1"
|
GAME_HEADS_OR_TAILS_HOUSE_EDGE | "5"
|
GAME_HORSE_RACING_CATEGORIES | "Sport"
|
GAME_HORSE_RACING_BANNER | "/images/home/horse-racing.jpg"
|
GAME_HORSE_RACING_MIN_BET | "0"
|
GAME_HORSE_RACING_MAX_BET | "50"
|
GAME_HORSE_RACING_BET_CHANGE_AMOUNT | "1"
|
GAME_HORSE_RACING_ANIMATION_LENGTH | "15"
|
GAME_HORSE_RACING_RUNNERS | "[{"name":"Blazer","colors":{"horse":{"body":"#BDB8B3","tail":"#7A7373","pad":{"text":"#ffffff","background":"#F2711C"}},"jockey":{"face":"#FFDCB1","hat":"#F2711C","shirt":"#E6E0DD"}}},{"name":"Wrangler","colors":{"horse":{"body":"#4a2a04","tail":"#000000","pad":{"text":"#ffffff","background":"#0E9E3E"}},"jockey":{"face":"#FFDCB1","hat":"#000000","shirt":"#0E9E3E"}}},{"name":"Sheriff","colors":{"horse":{"body":"#2E1901","tail":"#000000","pad":{"text":"#012757","background":"#C0D5E6"}},"jockey":{"face":"#FFDCB1","hat":"#012757","shirt":"#012757"}}},{"name":"Kentucky","colors":{"horse":{"body":"#3B3936","tail":"#3F3D39","pad":{"text":"#ffffff","background":"#767676"}},"jockey":{"face":"#FFDCB1","hat":"#EBB905","shirt":"#EBB905"}}},{"name":"Diesel","colors":{"horse":{"body":"#000000","tail":"#000000","pad":{"text":"#ffffff","background":"#DB2828"}},"jockey":{"face":"#FFDCB1","hat":"#DB2828","shirt":"#F75858"}}},{"name":"Tennessee","colors":{"horse":{"body":"#FAFAF9","tail":"#918F8F","pad":{"text":"#000000","background":"#FFFFFF"}},"jockey":{"face":"#FFDCB1","hat":"#000000","shirt":"#000000"}}},{"name":"Ladybird","colors":{"horse":{"body":"#532F11","tail":"#613B1C","pad":{"text":"#ffffff","background":"#532F11"}},"jockey":{"face":"#FFDCB1","hat":"#532F11","shirt":"#B3A091"}}},{"name":"Sassy","colors":{"horse":{"body":"#AA7719","tail":"#5F3F03","pad":{"text":"#6E0491","background":"#DFC5E7"}},"jockey":{"face":"#FFDCB1","hat":"#6E0491","shirt":"#6E0491"}}}]"
|
GAME_HORSE_RACING_PAYTABLE | "[[1.9,2,2.1,2,2.2,2.4,2.05,2.3],[1.8,1.5,1.45,1.65,1.35,1.5,1.55,1.6],[1.05,1.1,1.15,1.1,1.2,1.12,1.1,1.18]]"
|
GAME_KENO_CATEGORIES | "Table"
|
GAME_KENO_BANNER | "/images/home/keno.jpg"
|
GAME_KENO_MIN_BET | "1"
|
GAME_KENO_MAX_BET | "50"
|
GAME_KENO_BET_CHANGE_AMOUNT | "1"
|
GAME_KENO_DEFAULT_BET_AMOUNT | "1"
|
GAME_KENO_DRAW_COUNT | "20"
|
GAME_KENO_PAYOUTS | "{"1":"0","2":"0","3":"0","4":"1","5":"5","6":"10","7":"25","8":"125","9":"500","10":"1000"}"
|
GAME_LUCKY_WHEEL_VARIATIONS | "[{"title":"Lucky Wheel","slug":"lucky-wheel","min_bet":1,"max_bet":500,"bet_change_amount":1,"default_bet":1,"banner":"/images/home/lucky-wheel.jpg","categories":"Roulette","sections":[{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x2","payout":2},{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x3","payout":3},{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x4","payout":4}]}]"
|
GAME_MULTI_SLOTS_TITLES | "["Crypto Slots","Starwars Crypto Slots"]"
|
GAME_MULTI_SLOTS_SLUGS | "["crypto-slots","starwars"]"
|
GAME_MULTI_SLOTS_CATEGORIES | "["Slots","Slots"]"
|
GAME_MULTI_SLOTS_BANNERS | "["\/images\/home\/crypto-slots.jpg","\/storage\/home\/multi-slots-1-1615402679.jpeg"]"
|
GAME_MULTI_SLOTS_BACKGROUNDS | "[null,"\/storage\/games\/multi-slots\/1\/background-1615406963.gif"]"
|
GAME_MULTI_SLOTS_MIN_BET | "["1","1"]"
|
GAME_MULTI_SLOTS_MAX_BET | "["500","500"]"
|
GAME_MULTI_SLOTS_BET_CHANGE_AMOUNT | "["1","1"]"
|
GAME_MULTI_SLOTS_DEFAULT_BET | "["1","1"]"
|
GAME_MULTI_SLOTS_DEFAULT_LINES | "["10","10"]"
|
GAME_MULTI_SLOTS_SYMBOLS | "[[{"filename":"eth.png","scatter":false,"wild":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":0,"el":{}},{"filename":"btc.png","scatter":false,"wild":true,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"20","w4t":"x","w5":"30","w5t":"x","idx":1,"el":{}},{"filename":"nxt.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"5","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":2,"el":{}},{"filename":"zec.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":3,"el":{}},{"filename":"ltc.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"0","w3t":"x","w4":"20","w4t":"x","w5":"40","w5t":"x","idx":4,"el":{}},{"filename":"ppc.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"2","w2t":"x","w3":"3","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":5,"el":{}},{"filename":"ledger.png","scatter":true,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"0","w3t":"x","w4":"10","w4t":"x","w5":"25","w5t":"x","idx":6,"el":{}},{"filename":"xmr.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"5","w3t":"x","w4":"20","w4t":"x","w5":"50","w5t":"x","idx":7,"el":{}},{"filename":"xrp.png","scatter":false,"wild":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"1","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":8,"el":{}}],[{"filename":"sym-1615404012-5309-13.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":"0","el":{}},{"filename":"sym-1615404012-5582-14.png","scatter":false,"wild":true,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"20","w4t":"x","w5":"30","w5t":"x","idx":"1","el":{}},{"filename":"sym-1615404012-5729-25.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"5","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":"2","el":{}},{"filename":"sym-1615404012-5844-13.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":"3","el":{}},{"filename":"sym-1615404012-5972-10.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"20","w4t":"x","w5":"40","w5t":"x","idx":"4","el":{}},{"filename":"sym-1615404012-6115-28.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":"5","el":{}},{"filename":"sym-1615404012-6246-23.png","scatter":true,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"10","w4t":"x","w5":"25","w5t":"x","idx":"6","el":{}},{"filename":"sym-1615404012-6377-15.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"5","w3t":"x","w4":"20","w4t":"x","w5":"50","w5t":"x","idx":"7","el":{}},{"filename":"sym-1615404012-6505-27.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"1","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":"8","el":{}}]]"
|
GAME_MULTI_SLOTS_REELS | "[{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}},{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}}]"
|
GAME_ROULETTE_CATEGORIES | "Roulette"
|
GAME_ROULETTE_BANNER | "/images/home/roulette.jpg"
|
GAME_ROULETTE_MIN_BET | "1"
|
GAME_ROULETTE_MAX_BET | "50"
|
GAME_ROULETTE_MAX_TOTAL_BET | "500"
|
GAME_ROULETTE_BET_CHANGE_AMOUNT | "1"
|
GAME_ROULETTE_DEFAULT_BET_AMOUNT | "1"
|
GAME_VIDEO_POKER_CATEGORIES | "Cards"
|
GAME_VIDEO_POKER_BANNER | "/images/home/video-poker.jpg"
|
GAME_VIDEO_POKER_MIN_BET | "1"
|
GAME_VIDEO_POKER_MAX_BET | "50"
|
GAME_VIDEO_POKER_BET_CHANGE_AMOUNT | "1"
|
GAME_VIDEO_POKER_DEFAULT_BET_AMOUNT | "1"
|
GAME_VIDEO_POKER_DEFAULT_BET_COINS | "1"
|
GAME_VIDEO_POKER_PAYTABLE | "[[0,1,2,3,4,6,9,25,50,250],[0,2,4,6,8,12,18,50,100,500],[0,3,6,9,12,18,27,75,150,750],[0,4,8,12,16,24,36,100,200,1000],[0,5,10,15,20,30,45,125,250,4000]]"
|
PAYMENTS_PURCHASE_CODE | "****************************************"
|
PAYMENTS_NOTIFICATIONS_ADMIN_DEPOSIT_ENABLED | "true"
|
PAYMENTS_NOTIFICATIONS_ADMIN_DEPOSIT_TRESHOLD | "0"
|
PAYMENTS_NOTIFICATIONS_ADMIN_WITHDRAWAL_ENABLED | "true"
|
PAYMENTS_NOTIFICATIONS_ADMIN_WITHDRAWAL_TRESHOLD | "0"
|
PAYMENTS_DEPOSIT_MIN | "100"
|
PAYMENTS_DEPOSIT_MAX | "999999999999"
|
PAYMENTS_WITHDRAWAL_MIN | "100"
|
PAYMENTS_WITHDRAWAL_MAX | "999"
|
PAYMENTS_MIN_TOTAL_DEPOSIT_TO_WITHDRAW | "0"
|
PAYMENTS_WITHDRAWAL_AUTO_MAX | "0"
|
PAYMENTS_WITHDRAWAL_ONLY_PROFITS | "true"
|
PAYMENTS_PAYPAL_USER | "" |
PAYMENTS_PAYPAL_PASSWORD | "" |
PAYMENTS_PAYPAL_SIGNATURE | "" |
PAYMENTS_PAYPAL_TEST_MODE | "false"
|
PAYMENTS_STRIPE_PUBLIC_KEY | "" |
PAYMENTS_STRIPE_SECRET_KEY | "" |
PAYMENTS_COINPAYMENTS_MERCHANT_ID | "********************************"
|
PAYMENTS_COINPAYMENTS_PUBLIC_KEY | "****************************************************************"
|
PAYMENTS_COINPAYMENTS_PRIVATE_KEY | "****************************************************************"
|
PAYMENTS_COINPAYMENTS_SECRET_KEY | "*******"
|
PAYMENTS_COINPAYMENTS_AUTO_CONFIRM_WITHDRAWALS | "false"
|
PAYMENTS_ETHEREUM_ETHERSCAN_API_KEY | "" |
PAYMENTS_ETHEREUM_NETWORK | "main"
|
PAYMENTS_ETHEREUM_DEPOSIT_ADDRESS | "" |
PAYMENTS_ETHEREUM_DEPOSIT_CONTRACT | "" |
PAYMENTS_ETHEREUM_DEPOSIT_CONTRACT_DECIMALS | "18"
|
PAYMENTS_BSC_EXPLORER_API_KEY | "" |
PAYMENTS_BSC_NETWORK | "bsc-main"
|
PAYMENTS_BSC_DEPOSIT_ADDRESS | "" |
PAYMENTS_BSC_DEPOSIT_CONTRACT | "" |
PAYMENTS_BSC_DEPOSIT_CONTRACT_DECIMALS | "18"
|
BONUSES_FAUCET_AMOUNT | "100"
|
BONUSES_FAUCET_INTERVAL | "24"
|
PAYMENTS_POLYGON_EXPLORER_API_KEY | "" |
PAYMENTS_POLYGON_NETWORK | "polygon-main"
|
PAYMENTS_POLYGON_DEPOSIT_ADDRESS | "" |
PAYMENTS_POLYGON_DEPOSIT_CONTRACT | "" |
PAYMENTS_POLYGON_DEPOSIT_CONTRACT_DECIMALS | "18"
|
Key | Value |
APP_ENV | "local"
|
APP_KEY | "***************************************************"
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
LOCALE | "en"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "localhost"
|
DB_PORT | "3306"
|
DB_DATABASE | "******"
|
DB_USERNAME | "*********"
|
SESSION_LIFETIME | "120"
|
SESSION_COOKIE_NAME | "cryptovegas"
|
SESSION_COOKIE | "cryptovegas"
|
DB_PASSWORD | "********"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "************************"
|
MAIL_PORT | "25"
|
MAIL_USERNAME | "*********************"
|
MAIL_PASSWORD | "***************"
|
MAIL_ENCRYPTION | "" |
SESSION_DOMAIN | "crypto-vegas.com"
|
PURCHASE_CODE | "************************************"
|
LICENSEE_EMAIL | "**********************************"
|
SECURITY_HASH | "****************************************"
|
FORCE_SSL | "1"
|
THEME | "dark-purple"
|
LAYOUT | "boxed"
|
HOME_SLIDER | "{"indicators":true,"controls":true,"animation":"fade","interval":5,"slides":[{"title":"Crypto Vegas","subtitle":"Fair online gaming platform","image":{"url":"/storage/home/slider/slider-1-1615172527.jpeg"},"link":{"title":"","url":"","class":""}},{"title":"Try your luck","subtitle":"Can you beat other players?","image":{"url":"/storage/home/slider/slider-2-1615173097.png"},"link":{"title":"Leaderboard","url":"/leaderboard","class":"btn btn-primary btn-lg"}}]}"
|
USERS_EMAIL_VERIFICATION | "true"
|
BONUSES_SIGN_UP_CREDITS | "1000"
|
BONUSES_GAME_LOSS_AMOUNT_MIN | "1000"
|
BONUSES_GAME_LOSS_AMOUNT_PCT | "10"
|
BONUSES_GAME_WIN_AMOUNT_MIN | "1000"
|
BONUSES_GAME_WIN_AMOUNT_PCT | "10"
|
BONUSES_DEPOSIT_AMOUNT_MIN | "0"
|
BONUSES_DEPOSIT_AMOUNT_PCT | "0"
|
BONUSES_REFERRAL_REFEREE_SIGN_UP_CREDITS | "50"
|
BONUSES_REFERRAL_REFERRER_SIGN_UP_CREDITS | "100"
|
BONUSES_REFERRAL_REFERRER_GAME_LOSS_PCT | "10"
|
BONUSES_REFERRAL_REFERRER_GAME_WIN_PCT | "10"
|
BONUSES_RAFFLE_TICKET_PCT | "0"
|
BONUSES_REFERRAL_REFERRER_DEPOSIT_PCT | "0"
|
BOTS_PLAY_FREQUENCY | "5"
|
BOTS_SELECT_COUNT_MIN | "10"
|
BOTS_SELECT_COUNT_MAX | "100"
|
BOTS_MIN_BET | "100"
|
BOTS_MAX_BET | "1000"
|
FORMAT_NUMBER_DECIMAL_POINT | "46"
|
FORMAT_NUMBER_THOUSANDS_SEPARATOR | "44"
|
MAIL_FROM_ADDRESS | "info@crypto-vegas.com"
|
MAIL_FROM_NAME | "Crypto Vegas"
|
NOTIFICATIONS_ADMIN_EMAIL | "info@crypto-vegas.com"
|
NOTIFICATIONS_ADMIN_REGISTRATION_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_WIN_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_WIN_TRESHOLD | "1000"
|
NOTIFICATIONS_ADMIN_GAME_LOSS_ENABLED | "true"
|
NOTIFICATIONS_ADMIN_GAME_LOSS_TRESHOLD | "1000"
|
GTM_CONTAINER_ID | "GTM-TMWMKD5"
|
RECAPTCHA_PUBLIC_KEY | "6LeBE2waAAAAAIiUqfBEtRNquxCyBnUmf9fJ_drI"
|
RECAPTCHA_SECRET_KEY | "****************************************"
|
BROADCAST_DRIVER | "pusher"
|
PUSHER_APP_ID | "1167438"
|
PUSHER_APP_KEY | "8e4b4c488abb851da8da"
|
PUSHER_APP_SECRET | "********************"
|
PUSHER_APP_CLUSTER | "eu"
|
FACEBOOK_CLIENT_ID | "1859360597572594"
|
FACEBOOK_CLIENT_SECRET | "********************************"
|
TWITTER_CLIENT_ID | "8NoEfO1UDs1WwbjFASJLfzbn6"
|
TWITTER_CLIENT_SECRET | "**************************************************"
|
GOOGLE_CLIENT_ID | "313307854630-ashftm5lmo1qef2gg88vsjp9gn9vfhgm.apps.googleusercontent.com"
|
GOOGLE_CLIENT_SECRET | "************************"
|
LINKEDIN_CLIENT_ID | "" |
LINKEDIN_CLIENT_SECRET | "" |
YAHOO_CLIENT_ID | "" |
YAHOO_CLIENT_SECRET | "" |
COINBASE_CLIENT_ID | "" |
COINBASE_CLIENT_SECRET | "" |
STEEM_CLIENT_ID | "" |
STEEM_CLIENT_SECRET | "" |
GAME_SLOTS_CATEGORIES | "Slots"
|
GAME_SLOTS_BANNER | "/images/home/slots.jpg"
|
GAME_SLOTS_BACKGROUND | "/images/games/slots/background.jpg"
|
GAME_SLOTS_MIN_BET | "1"
|
GAME_SLOTS_MAX_BET | "500"
|
GAME_SLOTS_BET_CHANGE_AMOUNT | "1"
|
GAME_SLOTS_DEFAULT_BET | "1"
|
GAME_SLOTS_DEFAULT_LINES | "10"
|
GAME_SLOTS_SYMBOLS | "[{"filename":"apple.png","scatter":false,"wild":false,"free":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"5","w4t":"x","w5":"20","w5t":"x","idx":0,"el":{}},{"filename":"bar.png","scatter":false,"wild":true,"free":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":1,"el":{}},{"filename":"bell.png","scatter":false,"wild":false,"free":true,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"1","w3t":"x","w4":"2","w4t":"x","w5":"3","w5t":"x","idx":2,"el":{}},{"filename":"cherry.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":3,"el":{}},{"filename":"lemon.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"7","w4t":"x","w5":"20","w5t":"x","idx":4,"el":{}},{"filename":"orange.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":5,"el":{}},{"filename":"plum.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":6,"el":{}},{"filename":"seven.png","scatter":true,"wild":false,"free":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"5","w4t":"x","w5":"10","w5t":"x","idx":7,"el":{}},{"filename":"water-melon.png","scatter":false,"wild":false,"free":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"5","w4t":"x","w5":"15","w5t":"x","idx":8,"el":{}}]"
|
GAME_SLOTS_REELS | "{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}}"
|
GAME_VIDEO_POKER_PURCHASE_CODE | "************************************"
|
GAME_BLACKJACK_PURCHASE_CODE | "************************************"
|
GAME_ROULETTE_PURCHASE_CODE | "************************************"
|
GAME_DICE_PURCHASE_CODE | "************************************"
|
GAME_MULTI_SLOTS_PURCHASE_CODE | "************************************"
|
GAME_AMERICAN_BINGO_PURCHASE_CODE | "************************************"
|
GAME_KENO_PURCHASE_CODE | "************************************"
|
GAME_LUCKY_WHEEL_PURCHASE_CODE | "************************************"
|
GAME_BACCARAT_PURCHASE_CODE | "************************************"
|
GAME_DICE_3D_PURCHASE_CODE | "************************************"
|
GAME_HEADS_OR_TAILS_PURCHASE_CODE | "************************************"
|
GAME_CASINO_HOLDEM_PURCHASE_CODE | "************************************"
|
GAME_HORSE_RACING_PURCHASE_CODE | "************************************"
|
GAME_AMERICAN_BINGO_CATEGORIES | "Table"
|
GAME_AMERICAN_BINGO_BANNER | "/images/home/american-bingo.jpg"
|
GAME_AMERICAN_BINGO_MIN_BET | "1"
|
GAME_AMERICAN_BINGO_MAX_BET | "50"
|
GAME_AMERICAN_BINGO_BET_CHANGE_AMOUNT | "1"
|
GAME_AMERICAN_BINGO_DEFAULT_BET_AMOUNT | "1"
|
GAME_AMERICAN_BINGO_PAYOUTS | "{"1":"5","2":"5","3":"10","4":"25"}"
|
GAME_BACCARAT_CATEGORIES | "Cards"
|
GAME_BACCARAT_BANNER | "/images/home/baccarat.jpg"
|
GAME_BACCARAT_MIN_BET | "1"
|
GAME_BACCARAT_MAX_BET | "50"
|
GAME_BACCARAT_BET_CHANGE_AMOUNT | "1"
|
GAME_BACCARAT_DEFAULT_BET_AMOUNT | "1"
|
GAME_BACCARAT_PAYOUT_PLAYER | "2"
|
GAME_BACCARAT_PAYOUT_BANKER | "1.95"
|
GAME_BACCARAT_PAYOUT_TIE | "9"
|
GAME_BLACKJACKT_CATEGORIES | "Cards"
|
GAME_BLACKJACK_BANNER | "/images/home/blackjack.jpg"
|
GAME_BLACKJACK_MIN_BET | "1"
|
GAME_BLACKJACK_MAX_BET | "50"
|
GAME_BLACKJACK_BET_CHANGE_AMOUNT | "1"
|
GAME_BLACKJACK_DEFAULT_BET_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_CATEGORIES | "Cards"
|
GAME_CASINO_HOLDEM_BANNER | "/images/home/casino-holdem.jpg"
|
GAME_CASINO_HOLDEM_MIN_BET | "1"
|
GAME_CASINO_HOLDEM_MAX_BET | "50"
|
GAME_CASINO_HOLDEM_BET_CHANGE_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_DEFAULT_BET_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_MIN_BONUS_BET | "0"
|
GAME_CASINO_HOLDEM_MAX_BONUS_BET | "50"
|
GAME_CASINO_HOLDEM_BONUS_BET_CHANGE_AMOUNT | "1"
|
GAME_CASINO_HOLDEM_DEFAULT_BONUS_BET_AMOUNT | "0"
|
GAME_CASINO_HOLDEM_ANTE_PAYTABLE | "["0","2","2","2","2","3","4","11","21","101"]"
|
GAME_CASINO_HOLDEM_BONUS_PAYTABLE | "["0","8","8","8","8","21","31","41","51","101"]"
|
GAME_DICE_3D_CATEGORIES | "Table"
|
GAME_DICE_3D_BANNER | "/images/home/dice-3d.jpg"
|
GAME_DICE_3D_MIN_BET | "1"
|
GAME_DICE_3D_MAX_BET | "50"
|
GAME_DICE_3D_BET_CHANGE_AMOUNT | "10"
|
GAME_DICE_3D_DEFAULT_BET_AMOUNT | "1"
|
GAME_DICE_3D_HOUSE_EDGE | "1"
|
GAME_DICE_3D_DICE | "["tetrahedron","cube","octahedron","dipyramid","dodecahedron","icosahedron"]"
|
GAME_DICE_CATEGORIES | "Table"
|
GAME_DICE_BANNER | "/images/home/dice.jpg"
|
GAME_DICE_MIN_BET | "1"
|
GAME_DICE_MAX_BET | "50"
|
GAME_DICE_BET_CHANGE_AMOUNT | "10"
|
GAME_DICE_MIN_WIN_CHANCE | "1"
|
GAME_DICE_MAX_WIN_CHANCE | "98"
|
GAME_DICE_HOUSE_EDGE | "1"
|
GAME_DICE_DEFAULT_BET_AMOUNT | "1"
|
GAME_HEADS_OR_TAILS_CATEGORIES | "Table"
|
GAME_HEADS_OR_TAILS_BANNER | "/images/home/heads-or-tails.jpg"
|
GAME_HEADS_OR_TAILS_MIN_BET | "1"
|
GAME_HEADS_OR_TAILS_MAX_BET | "50"
|
GAME_HEADS_OR_TAILS_BET_CHANGE_AMOUNT | "10"
|
GAME_HEADS_OR_TAILS_DEFAULT_BET_AMOUNT | "1"
|
GAME_HEADS_OR_TAILS_HOUSE_EDGE | "5"
|
GAME_HORSE_RACING_CATEGORIES | "Sport"
|
GAME_HORSE_RACING_BANNER | "/images/home/horse-racing.jpg"
|
GAME_HORSE_RACING_MIN_BET | "0"
|
GAME_HORSE_RACING_MAX_BET | "50"
|
GAME_HORSE_RACING_BET_CHANGE_AMOUNT | "1"
|
GAME_HORSE_RACING_ANIMATION_LENGTH | "15"
|
GAME_HORSE_RACING_RUNNERS | "[{"name":"Blazer","colors":{"horse":{"body":"#BDB8B3","tail":"#7A7373","pad":{"text":"#ffffff","background":"#F2711C"}},"jockey":{"face":"#FFDCB1","hat":"#F2711C","shirt":"#E6E0DD"}}},{"name":"Wrangler","colors":{"horse":{"body":"#4a2a04","tail":"#000000","pad":{"text":"#ffffff","background":"#0E9E3E"}},"jockey":{"face":"#FFDCB1","hat":"#000000","shirt":"#0E9E3E"}}},{"name":"Sheriff","colors":{"horse":{"body":"#2E1901","tail":"#000000","pad":{"text":"#012757","background":"#C0D5E6"}},"jockey":{"face":"#FFDCB1","hat":"#012757","shirt":"#012757"}}},{"name":"Kentucky","colors":{"horse":{"body":"#3B3936","tail":"#3F3D39","pad":{"text":"#ffffff","background":"#767676"}},"jockey":{"face":"#FFDCB1","hat":"#EBB905","shirt":"#EBB905"}}},{"name":"Diesel","colors":{"horse":{"body":"#000000","tail":"#000000","pad":{"text":"#ffffff","background":"#DB2828"}},"jockey":{"face":"#FFDCB1","hat":"#DB2828","shirt":"#F75858"}}},{"name":"Tennessee","colors":{"horse":{"body":"#FAFAF9","tail":"#918F8F","pad":{"text":"#000000","background":"#FFFFFF"}},"jockey":{"face":"#FFDCB1","hat":"#000000","shirt":"#000000"}}},{"name":"Ladybird","colors":{"horse":{"body":"#532F11","tail":"#613B1C","pad":{"text":"#ffffff","background":"#532F11"}},"jockey":{"face":"#FFDCB1","hat":"#532F11","shirt":"#B3A091"}}},{"name":"Sassy","colors":{"horse":{"body":"#AA7719","tail":"#5F3F03","pad":{"text":"#6E0491","background":"#DFC5E7"}},"jockey":{"face":"#FFDCB1","hat":"#6E0491","shirt":"#6E0491"}}}]"
|
GAME_HORSE_RACING_PAYTABLE | "[[1.9,2,2.1,2,2.2,2.4,2.05,2.3],[1.8,1.5,1.45,1.65,1.35,1.5,1.55,1.6],[1.05,1.1,1.15,1.1,1.2,1.12,1.1,1.18]]"
|
GAME_KENO_CATEGORIES | "Table"
|
GAME_KENO_BANNER | "/images/home/keno.jpg"
|
GAME_KENO_MIN_BET | "1"
|
GAME_KENO_MAX_BET | "50"
|
GAME_KENO_BET_CHANGE_AMOUNT | "1"
|
GAME_KENO_DEFAULT_BET_AMOUNT | "1"
|
GAME_KENO_DRAW_COUNT | "20"
|
GAME_KENO_PAYOUTS | "{"1":"0","2":"0","3":"0","4":"1","5":"5","6":"10","7":"25","8":"125","9":"500","10":"1000"}"
|
GAME_LUCKY_WHEEL_VARIATIONS | "[{"title":"Lucky Wheel","slug":"lucky-wheel","min_bet":1,"max_bet":500,"bet_change_amount":1,"default_bet":1,"banner":"/images/home/lucky-wheel.jpg","categories":"Roulette","sections":[{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x2","payout":2},{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x3","payout":3},{"title":"No luck","payout":0},{"title":"x1","payout":1},{"title":"x4","payout":4}]}]"
|
GAME_MULTI_SLOTS_TITLES | "["Crypto Slots","Starwars Crypto Slots"]"
|
GAME_MULTI_SLOTS_SLUGS | "["crypto-slots","starwars"]"
|
GAME_MULTI_SLOTS_CATEGORIES | "["Slots","Slots"]"
|
GAME_MULTI_SLOTS_BANNERS | "["\/images\/home\/crypto-slots.jpg","\/storage\/home\/multi-slots-1-1615402679.jpeg"]"
|
GAME_MULTI_SLOTS_BACKGROUNDS | "[null,"\/storage\/games\/multi-slots\/1\/background-1615406963.gif"]"
|
GAME_MULTI_SLOTS_MIN_BET | "["1","1"]"
|
GAME_MULTI_SLOTS_MAX_BET | "["500","500"]"
|
GAME_MULTI_SLOTS_BET_CHANGE_AMOUNT | "["1","1"]"
|
GAME_MULTI_SLOTS_DEFAULT_BET | "["1","1"]"
|
GAME_MULTI_SLOTS_DEFAULT_LINES | "["10","10"]"
|
GAME_MULTI_SLOTS_SYMBOLS | "[[{"filename":"eth.png","scatter":false,"wild":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":0,"el":{}},{"filename":"btc.png","scatter":false,"wild":true,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"0","w3t":"x","w4":"20","w4t":"x","w5":"30","w5t":"x","idx":1,"el":{}},{"filename":"nxt.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"5","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":2,"el":{}},{"filename":"zec.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":3,"el":{}},{"filename":"ltc.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"0","w3t":"x","w4":"20","w4t":"x","w5":"40","w5t":"x","idx":4,"el":{}},{"filename":"ppc.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"2","w2t":"x","w3":"3","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":5,"el":{}},{"filename":"ledger.png","scatter":true,"wild":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"0","w3t":"x","w4":"10","w4t":"x","w5":"25","w5t":"x","idx":6,"el":{}},{"filename":"xmr.png","scatter":false,"wild":false,"w1":0,"w1t":"x","w2":"0","w2t":"x","w3":"5","w3t":"x","w4":"20","w4t":"x","w5":"50","w5t":"x","idx":7,"el":{}},{"filename":"xrp.png","scatter":false,"wild":false,"w1":"0","w1t":"x","w2":"0","w2t":"x","w3":"1","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":8,"el":{}}],[{"filename":"sym-1615404012-5309-13.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":"0","el":{}},{"filename":"sym-1615404012-5582-14.png","scatter":false,"wild":true,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"20","w4t":"x","w5":"30","w5t":"x","idx":"1","el":{}},{"filename":"sym-1615404012-5729-25.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"5","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":"2","el":{}},{"filename":"sym-1615404012-5844-13.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"2","w3t":"x","w4":"10","w4t":"x","w5":"15","w5t":"x","idx":"3","el":{}},{"filename":"sym-1615404012-5972-10.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"20","w4t":"x","w5":"40","w5t":"x","idx":"4","el":{}},{"filename":"sym-1615404012-6115-28.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"3","w3t":"x","w4":"15","w4t":"x","w5":"30","w5t":"x","idx":"5","el":{}},{"filename":"sym-1615404012-6246-23.png","scatter":true,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":0,"w3t":"x","w4":"10","w4t":"x","w5":"25","w5t":"x","idx":"6","el":{}},{"filename":"sym-1615404012-6377-15.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"5","w3t":"x","w4":"20","w4t":"x","w5":"50","w5t":"x","idx":"7","el":{}},{"filename":"sym-1615404012-6505-27.png","scatter":false,"wild":false,"free":false,"w1":0,"w1t":"x","w2":0,"w2t":"x","w3":"1","w3t":"x","w4":"10","w4t":"x","w5":"20","w5t":"x","idx":"8","el":{}}]]"
|
GAME_MULTI_SLOTS_REELS | "[{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}},{"0":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8},"1":{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":0},"2":{"0":2,"1":3,"2":4,"3":5,"4":6,"5":7,"6":8,"7":0,"8":1},"3":{"0":3,"1":4,"2":5,"3":6,"4":7,"5":8,"6":0,"7":1,"8":2},"4":{"0":4,"1":5,"2":6,"3":7,"4":8,"5":0,"6":1,"7":2,"8":3}}]"
|
GAME_ROULETTE_CATEGORIES | "Roulette"
|
GAME_ROULETTE_BANNER | "/images/home/roulette.jpg"
|
GAME_ROULETTE_MIN_BET | "1"
|
GAME_ROULETTE_MAX_BET | "50"
|
GAME_ROULETTE_MAX_TOTAL_BET | "500"
|
GAME_ROULETTE_BET_CHANGE_AMOUNT | "1"
|
GAME_ROULETTE_DEFAULT_BET_AMOUNT | "1"
|
GAME_VIDEO_POKER_CATEGORIES | "Cards"
|
GAME_VIDEO_POKER_BANNER | "/images/home/video-poker.jpg"
|
GAME_VIDEO_POKER_MIN_BET | "1"
|
GAME_VIDEO_POKER_MAX_BET | "50"
|
GAME_VIDEO_POKER_BET_CHANGE_AMOUNT | "1"
|
GAME_VIDEO_POKER_DEFAULT_BET_AMOUNT | "1"
|
GAME_VIDEO_POKER_DEFAULT_BET_COINS | "1"
|
GAME_VIDEO_POKER_PAYTABLE | "[[0,1,2,3,4,6,9,25,50,250],[0,2,4,6,8,12,18,50,100,500],[0,3,6,9,12,18,27,75,150,750],[0,4,8,12,16,24,36,100,200,1000],[0,5,10,15,20,30,45,125,250,4000]]"
|
PAYMENTS_PURCHASE_CODE | "****************************************"
|
PAYMENTS_NOTIFICATIONS_ADMIN_DEPOSIT_ENABLED | "true"
|
PAYMENTS_NOTIFICATIONS_ADMIN_DEPOSIT_TRESHOLD | "0"
|
PAYMENTS_NOTIFICATIONS_ADMIN_WITHDRAWAL_ENABLED | "true"
|
PAYMENTS_NOTIFICATIONS_ADMIN_WITHDRAWAL_TRESHOLD | "0"
|
PAYMENTS_DEPOSIT_MIN | "100"
|
PAYMENTS_DEPOSIT_MAX | "999999999999"
|
PAYMENTS_WITHDRAWAL_MIN | "100"
|
PAYMENTS_WITHDRAWAL_MAX | "999"
|
PAYMENTS_MIN_TOTAL_DEPOSIT_TO_WITHDRAW | "0"
|
PAYMENTS_WITHDRAWAL_AUTO_MAX | "0"
|
PAYMENTS_WITHDRAWAL_ONLY_PROFITS | "true"
|
PAYMENTS_PAYPAL_USER | "" |
PAYMENTS_PAYPAL_PASSWORD | "" |
PAYMENTS_PAYPAL_SIGNATURE | "" |
PAYMENTS_PAYPAL_TEST_MODE | "false"
|
PAYMENTS_STRIPE_PUBLIC_KEY | "" |
PAYMENTS_STRIPE_SECRET_KEY | "" |
PAYMENTS_COINPAYMENTS_MERCHANT_ID | "********************************"
|
PAYMENTS_COINPAYMENTS_PUBLIC_KEY | "****************************************************************"
|
PAYMENTS_COINPAYMENTS_PRIVATE_KEY | "****************************************************************"
|
PAYMENTS_COINPAYMENTS_SECRET_KEY | "*******"
|
PAYMENTS_COINPAYMENTS_AUTO_CONFIRM_WITHDRAWALS | "false"
|
PAYMENTS_ETHEREUM_ETHERSCAN_API_KEY | "" |
PAYMENTS_ETHEREUM_NETWORK | "main"
|
PAYMENTS_ETHEREUM_DEPOSIT_ADDRESS | "" |
PAYMENTS_ETHEREUM_DEPOSIT_CONTRACT | "" |
PAYMENTS_ETHEREUM_DEPOSIT_CONTRACT_DECIMALS | "18"
|
PAYMENTS_BSC_EXPLORER_API_KEY | "" |
PAYMENTS_BSC_NETWORK | "bsc-main"
|
PAYMENTS_BSC_DEPOSIT_ADDRESS | "" |
PAYMENTS_BSC_DEPOSIT_CONTRACT | "" |
PAYMENTS_BSC_DEPOSIT_CONTRACT_DECIMALS | "18"
|
BONUSES_FAUCET_AMOUNT | "100"
|
BONUSES_FAUCET_INTERVAL | "24"
|
PAYMENTS_POLYGON_EXPLORER_API_KEY | "" |
PAYMENTS_POLYGON_NETWORK | "polygon-main"
|
PAYMENTS_POLYGON_DEPOSIT_ADDRESS | "" |
PAYMENTS_POLYGON_DEPOSIT_CONTRACT | "" |
PAYMENTS_POLYGON_DEPOSIT_CONTRACT_DECIMALS | "18"
|