First pass at getting us on Laravel 9

This commit is contained in:
Dane Everitt 2022-02-26 11:15:20 -05:00
parent cc43a6ec64
commit e236f74d1d
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
24 changed files with 1128 additions and 2113 deletions

View file

@ -8,7 +8,6 @@ use PDOException;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Swift_TransportException;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Container\Container; use Illuminate\Container\Container;
@ -20,6 +19,7 @@ use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\Mailer\Exception\TransportException;
use Pterodactyl\Exceptions\Repository\RecordNotFoundException; use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
@ -36,7 +36,7 @@ class Handler extends ExceptionHandler
/** /**
* A list of the exception types that should not be reported. * A list of the exception types that should not be reported.
* *
* @var string[] * @var array<int, class-string<Throwable>>
*/ */
protected $dontReport = [ protected $dontReport = [
AuthenticationException::class, AuthenticationException::class,
@ -88,7 +88,7 @@ class Handler extends ExceptionHandler
$ex = $this->generateCleanedExceptionStack($ex); $ex = $this->generateCleanedExceptionStack($ex);
}); });
$this->reportable(function (Swift_TransportException $ex) { $this->reportable(function (TransportException $ex) {
$ex = $this->generateCleanedExceptionStack($ex); $ex = $this->generateCleanedExceptionStack($ex);
}); });
} }

View file

@ -12,7 +12,7 @@ class RecordNotFoundException extends RepositoryException implements HttpExcepti
* *
* @return int * @return int
*/ */
public function getStatusCode() public function getStatusCode(): int
{ {
return Response::HTTP_NOT_FOUND; return Response::HTTP_NOT_FOUND;
} }
@ -22,7 +22,7 @@ class RecordNotFoundException extends RepositoryException implements HttpExcepti
* *
* @return array * @return array
*/ */
public function getHeaders() public function getHeaders(): array
{ {
return []; return [];
} }

View file

@ -2,25 +2,21 @@
namespace Pterodactyl\Http\Middleware; namespace Pterodactyl\Http\Middleware;
use Closure; use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
use Illuminate\Auth\AuthenticationException;
class Authenticate class Authenticate extends Middleware
{ {
/** /**
* Handle an incoming request. * Get the path the user should be redirected to when they are not authenticated.
* *
* @return mixed * @param \Illuminate\Http\Request $request
* *
* @throws \Illuminate\Auth\AuthenticationException * @return string|null
*/ */
public function handle(Request $request, Closure $next) protected function redirectTo($request)
{ {
if (!$request->user()) { if (!$request->expectsJson()) {
throw new AuthenticationException(); return '/';
} }
return $next($request);
} }
} }

View file

@ -9,7 +9,7 @@ class EncryptCookies extends BaseEncrypter
/** /**
* The names of the cookies that should not be encrypted. * The names of the cookies that should not be encrypted.
* *
* @var array * @var array<int, string>
*/ */
protected $except = []; protected $except = [];
} }

View file

@ -4,32 +4,27 @@ namespace Pterodactyl\Http\Middleware;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Auth\AuthManager; use Illuminate\Support\Facades\Auth;
use Pterodactyl\Providers\RouteServiceProvider;
class RedirectIfAuthenticated class RedirectIfAuthenticated
{ {
/**
* @var \Illuminate\Auth\AuthManager
*/
private $authManager;
/**
* RedirectIfAuthenticated constructor.
*/
public function __construct(AuthManager $authManager)
{
$this->authManager = $authManager;
}
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @return mixed * @param string|null ...$guards
* @phpstan-param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
*
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/ */
public function handle(Request $request, Closure $next, string $guard = null) public function handle(Request $request, Closure $next, ...$guards)
{ {
if ($this->authManager->guard($guard)->check()) { $guards = empty($guards) ? [null] : $guards;
return redirect()->route('index');
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
} }
return $next($request); return $next($request);

View file

@ -9,9 +9,10 @@ class TrimStrings extends BaseTrimmer
/** /**
* The names of the attributes that should not be trimmed. * The names of the attributes that should not be trimmed.
* *
* @var array * @var array<int, string>
*/ */
protected $except = [ protected $except = [
'current_password',
'password', 'password',
'password_confirmation', 'password_confirmation',
]; ];

View file

@ -2,15 +2,15 @@
namespace Pterodactyl\Http\Middleware; namespace Pterodactyl\Http\Middleware;
use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Request;
use Fideloper\Proxy\TrustProxies as Middleware; use Illuminate\Http\Middleware\TrustProxies as Middleware;
class TrustProxies extends Middleware class TrustProxies extends Middleware
{ {
/** /**
* The trusted proxies for this application. * The trusted proxies for this application.
* *
* @var array * @var array<int, string>|string|null
*/ */
protected $proxies; protected $proxies;
@ -19,5 +19,10 @@ class TrustProxies extends Middleware
* *
* @var int * @var int
*/ */
protected $headers = Request::HEADER_X_FORWARDED_ALL; protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB;
} }

View file

@ -9,11 +9,10 @@ class VerifyCsrfToken extends BaseVerifier
/** /**
* The URIs that should be excluded from CSRF verification. * The URIs that should be excluded from CSRF verification.
* *
* @var array * @var array<int, string>
*/ */
protected $except = [ protected $except = [
'remote/*', 'remote/*',
'daemon/*', 'daemon/*',
// 'api/*',
]; ];
} }

View file

@ -10,6 +10,15 @@ use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvi
class RouteServiceProvider extends ServiceProvider class RouteServiceProvider extends ServiceProvider
{ {
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/';
/** /**
* This namespace is applied to the controller routes in your routes file. * This namespace is applied to the controller routes in your routes file.
* *

View file

@ -19,26 +19,25 @@
"ext-zip": "*", "ext-zip": "*",
"aws/aws-sdk-php": "^3.209", "aws/aws-sdk-php": "^3.209",
"doctrine/dbal": "^3.3.2", "doctrine/dbal": "^3.3.2",
"fideloper/proxy": "^4.4.1",
"guzzlehttp/guzzle": "^7.4.1", "guzzlehttp/guzzle": "^7.4.1",
"hashids/hashids": "^4.1.0", "hashids/hashids": "^4.1.0",
"laracasts/utilities": "^3.2.1", "laracasts/utilities": "^3.2.1",
"laravel/framework": "^8.83.0", "laravel/framework": "^9.2.0",
"laravel/helpers": "^1.5.0", "laravel/helpers": "^1.5.0",
"laravel/sanctum": "^2.14.0", "laravel/sanctum": "^2.14.2",
"laravel/tinker": "^2.7.0", "laravel/tinker": "^2.7.0",
"laravel/ui": "^3.4.3", "laravel/ui": "^3.4.3",
"lcobucci/jwt": "^4.1.5", "lcobucci/jwt": "^4.1.5",
"league/flysystem-aws-s3-v3": "^1.0.29", "league/flysystem-aws-s3-v3": "^3.0.9",
"league/flysystem-memory": "^1.0.2", "league/flysystem-memory": "^3.0.9",
"matriphe/iso-639": "^1.2.0", "matriphe/iso-639": "^1.2.0",
"nyholm/psr7": "^1.5.0", "nyholm/psr7": "^1.5.0",
"pragmarx/google2fa": "^8.0.0", "pragmarx/google2fa": "^8.0.0",
"predis/predis": "^1.1.10", "predis/predis": "^1.1.10",
"psr/cache": "^1.0.1", "psr/cache": "^1.0.1",
"s1lentium/iptools": "^1.1.1", "s1lentium/iptools": "^1.1.1",
"spatie/laravel-fractal": "^5.8.1", "spatie/laravel-fractal": "^6.0.0",
"spatie/laravel-query-builder": "^3.6.2", "spatie/laravel-query-builder": "^5.0.0",
"staudenmeir/belongs-to-through": "^2.11.2", "staudenmeir/belongs-to-through": "^2.11.2",
"symfony/psr-http-message-bridge": "^2.1.2", "symfony/psr-http-message-bridge": "^2.1.2",
"symfony/yaml": "^6.0.3", "symfony/yaml": "^6.0.3",
@ -47,16 +46,19 @@
}, },
"require-dev": { "require-dev": {
"barryvdh/laravel-ide-helper": "^2.12.2", "barryvdh/laravel-ide-helper": "^2.12.2",
"facade/ignition": "^2.17.4",
"fakerphp/faker": "^1.19.0", "fakerphp/faker": "^1.19.0",
"friendsofphp/php-cs-fixer": "^3.0.0", "friendsofphp/php-cs-fixer": "^3.0.0",
"mockery/mockery": "^1.4.4", "mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^5.11.0", "nunomaduro/collision": "^6.1.0",
"nunomaduro/larastan": "^1.0.3", "nunomaduro/larastan": "^1.0.3",
"php-mock/php-mock-phpunit": "^2.6.0", "php-mock/php-mock-phpunit": "^2.6.0",
"phpstan/phpstan": "^1.4.6", "phpstan/phpstan": "^1.4.6",
"phpstan/phpstan-webmozart-assert": "^1.0.9", "phpstan/phpstan-webmozart-assert": "^1.0.9",
"phpunit/phpunit": "^9.5.13" "phpunit/phpunit": "^9.5.13",
"spatie/laravel-ignition": "^1.0.6"
},
"provide": {
"web-auth/webauthn-lib": "^3.3.11"
}, },
"autoload": { "autoload": {
"files": [ "files": [

2656
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -111,4 +111,17 @@ return [
'expire' => 60, 'expire' => 60,
], ],
], ],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => 10800,
]; ];

View file

@ -1,31 +0,0 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Additional Compiled Classes
|--------------------------------------------------------------------------
|
| Here you may specify additional classes to include in the compiled file
| generated by the `artisan optimize` command. These should be classes
| that are included on basically every request into the application.
|
*/
'files' => [
],
/*
|--------------------------------------------------------------------------
| Compiled File Providers
|--------------------------------------------------------------------------
|
| Here you may list service providers which define a "compiles" function
| that returns additional files that should be compiled, providing an
| easy way to get common files from any packages you are utilizing.
|
*/
'providers' => [
],
];

View file

@ -7,26 +7,13 @@ return [
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Here you may specify the default filesystem disk that should be used | Here you may specify the default filesystem disk that should be used
| by the framework. A "local" driver, as well as a variety of cloud | by the framework. The "local" disk, as well as a variety of cloud
| based drivers are available for your choosing. Just store away! | based disks are available to your application. Just store away!
| |
*/ */
'default' => env('FILESYSTEM_DRIVER', 'local'), 'default' => env('FILESYSTEM_DRIVER', 'local'),
/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Filesystem Disks | Filesystem Disks
@ -34,11 +21,12 @@ return [
| |
| Here you may configure as many filesystem "disks" as you wish, and you | Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have | may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options. | been set up for each driver as an example of the required values.
| |
| Supported Drivers: "local", "ftp", "s3", "rackspace" | Supported Drivers: "local", "ftp", "sftp", "s3"
| |
*/ */
'disks' => [ 'disks' => [
'local' => [ 'local' => [
'driver' => 'local', 'driver' => 'local',
@ -58,8 +46,24 @@ return [
'secret' => env('AWS_SECRET_ACCESS_KEY'), 'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'), 'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'), 'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'), 'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
], ],
], ],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
*/
'links' => [
public_path('storage') => storage_path('app/public'),
],
]; ];

View file

@ -43,8 +43,8 @@ return [
*/ */
'argon' => [ 'argon' => [
'memory' => 1024, 'memory' => 65536,
'threads' => 2, 'threads' => 1,
'time' => 2, 'time' => 4,
], ],
]; ];

View file

@ -2,6 +2,7 @@
use Monolog\Handler\NullHandler; use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler; use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
return [ return [
/* /*
@ -17,6 +18,19 @@ return [
'default' => env('LOG_CHANNEL', 'daily'), 'default' => env('LOG_CHANNEL', 'daily'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Log Channels | Log Channels
@ -36,19 +50,20 @@ return [
'stack' => [ 'stack' => [
'driver' => 'stack', 'driver' => 'stack',
'channels' => ['single'], 'channels' => ['single'],
'ignore_exceptions' => false,
], ],
'single' => [ 'single' => [
'driver' => 'single', 'driver' => 'single',
'path' => storage_path('logs/laravel.log'), 'path' => storage_path('logs/laravel.log'),
'level' => 'debug', 'level' => env('LOG_LEVEL', 'debug'),
], ],
'daily' => [ 'daily' => [
'driver' => 'daily', 'driver' => 'daily',
'path' => storage_path('logs/laravel.log'), 'path' => storage_path('logs/laravel.log'),
'level' => 'debug', 'level' => env('LOG_LEVEL', 'debug'),
'days' => 7, 'days' => 14,
], ],
'slack' => [ 'slack' => [
@ -56,12 +71,25 @@ return [
'url' => env('LOG_SLACK_WEBHOOK_URL'), 'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log', 'username' => 'Laravel Log',
'emoji' => ':boom:', 'emoji' => ':boom:',
'level' => 'critical', 'level' => env('LOG_LEVEL', 'critical'),
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'),
],
], ],
'stderr' => [ 'stderr' => [
'driver' => 'monolog', 'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class, 'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [ 'with' => [
'stream' => 'php://stderr', 'stream' => 'php://stderr',
], ],
@ -69,17 +97,21 @@ return [
'syslog' => [ 'syslog' => [
'driver' => 'syslog', 'driver' => 'syslog',
'level' => 'debug', 'level' => env('LOG_LEVEL', 'debug'),
], ],
'errorlog' => [ 'errorlog' => [
'driver' => 'errorlog', 'driver' => 'errorlog',
'level' => 'debug', 'level' => env('LOG_LEVEL', 'debug'),
], ],
'null' => [ 'null' => [
'driver' => 'monolog', 'driver' => 'monolog',
'handler' => NullHandler::class, 'handler' => NullHandler::class,
], ],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
], ],
]; ];

View file

@ -3,45 +3,80 @@
return [ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Mail Driver | Default Mailer
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Laravel supports both SMTP and PHP's "mail" function as drivers for the | This option controls the default mailer that is used to send any email
| sending of e-mail. You may specify which one you're using throughout | messages sent by your application. Alternative mailers may be setup
| your application here. By default, Laravel is setup for SMTP mail. | and used as needed; however, this mailer will be used by default.
|
| Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
| "sparkpost", "log", "array"
| |
*/ */
'driver' => env('MAIL_DRIVER', 'smtp'), 'default' => env('MAIL_MAILER', env('MAIL_DRIVER', 'smtp')),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| SMTP Host Address | Mailer Configurations
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Here you may provide the host address of the SMTP server used by your | Here you may configure all of the mailers used by your application plus
| applications. A default option is provided that is compatible with | their respective settings. Several examples have been configured for
| the Mailgun mail service which will provide reliable deliveries. | you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array", "failover"
| |
*/ */
'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
],
/* 'ses' => [
|-------------------------------------------------------------------------- 'transport' => 'ses',
| SMTP Host Port ],
|--------------------------------------------------------------------------
|
| This is the SMTP port used by your application to deliver e-mails to
| users of the application. Like the host we have set this value to
| stay compatible with the Mailgun e-mail application by default.
|
*/
'port' => env('MAIL_PORT', 587), 'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
],
],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -55,75 +90,10 @@ return [
*/ */
'from' => [ 'from' => [
'address' => env('MAIL_FROM'), 'address' => env('MAIL_FROM_ADDRESS', env('MAIL_FROM', 'hello@example.com')),
'name' => env('MAIL_FROM_NAME', 'Pterodactyl Panel'), 'name' => env('MAIL_FROM_NAME', 'Example'),
], ],
/*
|--------------------------------------------------------------------------
| E-Mail Encryption Protocol
|--------------------------------------------------------------------------
|
| Here you may specify the encryption protocol that should be used when
| the application send e-mail messages. A sensible default using the
| transport layer security protocol should provide great security.
|
*/
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
/*
|--------------------------------------------------------------------------
| SMTP Server Username
|--------------------------------------------------------------------------
|
| If your SMTP server requires a username for authentication, you should
| set it here. This will get used to authenticate with your server on
| connection. You may also set the "password" value below this one.
|
*/
'username' => env('MAIL_USERNAME'),
/*
|--------------------------------------------------------------------------
| SMTP Server Password
|--------------------------------------------------------------------------
|
| Here you may set the password required by your SMTP server to send out
| messages from your application. This will be given to the server on
| connection so that the application will be able to send messages.
|
*/
'password' => env('MAIL_PASSWORD'),
/*
|--------------------------------------------------------------------------
| Sendmail System Path
|--------------------------------------------------------------------------
|
| When using the "sendmail" driver to send e-mails, we will need to know
| the path to where Sendmail lives on this server. A default path has
| been provided here, which will work well on most of your systems.
|
*/
'sendmail' => '/usr/sbin/sendmail -bs',
/*
|--------------------------------------------------------------------------
| Mail "Pretend"
|--------------------------------------------------------------------------
|
| When this option is enabled, e-mail will not actually be sent over the
| web and will instead be written to your application's logs files so
| you may inspect the message. This is great for local development.
|
*/
'pretend' => false,
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Markdown Mail Settings | Markdown Mail Settings
@ -134,6 +104,7 @@ return [
| of the emails. Or, you may simply stick with the Laravel defaults! | of the emails. Or, you may simply stick with the Laravel defaults!
| |
*/ */
'markdown' => [ 'markdown' => [
'theme' => 'default', 'theme' => 'default',

View file

@ -14,7 +14,7 @@ return [
| |
*/ */
'default' => env('QUEUE_CONNECTION', env('QUEUE_DRIVER', 'redis')), 'default' => env('QUEUE_CONNECTION', 'redis'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -41,11 +41,13 @@ return [
'sqs' => [ 'sqs' => [
'driver' => 'sqs', 'driver' => 'sqs',
'key' => env('SQS_KEY'), 'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('SQS_SECRET'), 'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_QUEUE_PREFIX'), 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('QUEUE_STANDARD', 'standard'), 'queue' => env('SQS_QUEUE', 'default'),
'region' => env('SQS_REGION', 'us-east-1'), 'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
], ],
'redis' => [ 'redis' => [
@ -53,6 +55,8 @@ return [
'connection' => 'default', 'connection' => 'default',
'queue' => env('QUEUE_STANDARD', 'standard'), 'queue' => env('QUEUE_STANDARD', 'standard'),
'retry_after' => 90, 'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
], ],
], ],
@ -68,7 +72,8 @@ return [
*/ */
'failed' => [ 'failed' => [
'database' => 'mysql', 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs', 'table' => 'failed_jobs',
], ],
]; ];

View file

@ -1,5 +1,7 @@
<?php <?php
use Laravel\Sanctum\Sanctum;
return [ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -14,10 +16,24 @@ return [
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( 'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s', '%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,pterodactyl.test', 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
env('APP_URL') ? ',' . parse_url(env('APP_URL'), PHP_URL_HOST) : '' Sanctum::currentApplicationUrlWithPort()
))), ))),
/*
|--------------------------------------------------------------------------
| Sanctum Guards
|--------------------------------------------------------------------------
|
| This array contains the authentication guards that will be checked when
| Sanctum is trying to authenticate a request. If none of these guards
| are able to authenticate the request, Sanctum will use the bearer
| token that's present on an incoming request for authentication.
|
*/
'guard' => ['web'],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Expiration Minutes | Expiration Minutes

View file

@ -3,20 +3,24 @@
return [ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Third Party Service | Third Party Services
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| This file is for storing the credentials for third party services such | This file is for storing the credentials for third party services such
| as Stripe, Mailgun, Mandrill, and others. This file provides a sane | as Mailgun, Postmark, AWS and more. This file provides the de facto
| default location for this type of information, allowing packages | location for this type of information, allowing packages to have
| to have a conventional place to find your various credentials. | a conventional file to locate the various service credentials.
| |
*/ */
'mailgun' => [ 'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'), 'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'), 'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
], ],
'mandrill' => [ 'mandrill' => [
@ -24,9 +28,9 @@ return [
], ],
'ses' => [ 'ses' => [
'key' => env('SES_KEY'), 'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('SES_SECRET'), 'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => 'us-east-1', 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
], ],
'sparkpost' => [ 'sparkpost' => [

View file

@ -1,5 +1,7 @@
<?php <?php
use Illuminate\Support\Str;
return [ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -94,7 +96,7 @@ return [
| |
*/ */
'store' => null, 'store' => env('SESSION_STORE'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -120,7 +122,10 @@ return [
| |
*/ */
'cookie' => env('SESSION_COOKIE', str_slug(env('APP_NAME', 'pterodactyl'), '_') . '_session'), 'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'pterodactyl'), '_') . '_session'
),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -159,7 +164,7 @@ return [
| |
*/ */
'secure' => env('SESSION_SECURE_COOKIE', false), 'secure' => env('SESSION_SECURE_COOKIE'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View file

@ -1,54 +0,0 @@
<?php
return [
/*
* Set trusted proxy IP addresses.
*
* Both IPv4 and IPv6 addresses are
* supported, along with CIDR notation.
*
* The "*" character is syntactic sugar
* within TrustedProxy to trust any proxy
* that connects directly to your server,
* a requirement when you cannot know the address
* of your proxy (e.g. if using Rackspace balancers).
*
* The "**" character is syntactic sugar within
* TrustedProxy to trust not just any proxy that
* connects directly to your server, but also
* proxies that connect to those proxies, and all
* the way back until you reach the original source
* IP. It will mean that $request->getClientIp()
* always gets the originating client IP, no matter
* how many proxies that client's request has
* subsequently passed through.
*/
'proxies' => in_array(env('TRUSTED_PROXIES', []), ['*', '**']) ?
env('TRUSTED_PROXIES') : explode(',', env('TRUSTED_PROXIES', null)),
/*
* Or, to trust all proxies that connect
* directly to your server, uncomment this:
*/
// 'proxies' => '*',
/*
* Or, to trust ALL proxies, including those that
* are in a chain of forwarding, uncomment this:
*/
// 'proxies' => '**',
/*
* Default Header Names
*
* Change these if the proxy does
* not send the default header names.
*
* Note that headers such as X-Forwarded-For
* are transformed to HTTP_X_FORWARDED_FOR format.
*
* The following are Symfony defaults, found in
* \Symfony\Component\HttpFoundation\Request::$trustedHeaders
*/
'headers' => \Illuminate\Http\Request::HEADER_X_FORWARDED_FOR | \Illuminate\Http\Request::HEADER_X_FORWARDED_HOST | \Illuminate\Http\Request::HEADER_X_FORWARDED_PORT | \Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO,
];

View file

@ -27,5 +27,8 @@ return [
| |
*/ */
'compiled' => realpath(storage_path('framework/views')), 'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
]; ];

View file

@ -1,58 +0,0 @@
<?php
namespace Pterodactyl\Tests\Unit\Http\Middleware;
use Mockery as m;
use Illuminate\Auth\AuthManager;
use Illuminate\Http\RedirectResponse;
use Pterodactyl\Http\Middleware\RedirectIfAuthenticated;
class RedirectIfAuthenticatedTest extends MiddlewareTestCase
{
/**
* @var \Illuminate\Auth\AuthManager|\Mockery\Mock
*/
private $authManager;
/**
* Setup tests.
*/
public function setUp(): void
{
parent::setUp();
$this->authManager = m::mock(AuthManager::class);
}
/**
* Test that an authenticated user is redirected.
*/
public function testAuthenticatedUserIsRedirected()
{
$this->authManager->shouldReceive('guard')->with(null)->once()->andReturnSelf();
$this->authManager->shouldReceive('check')->withNoArgs()->once()->andReturn(true);
$response = $this->getMiddleware()->handle($this->request, $this->getClosureAssertions());
$this->assertInstanceOf(RedirectResponse::class, $response);
$this->assertEquals(route('index'), $response->getTargetUrl());
}
/**
* Test that a non-authenticated user continues through the middleware.
*/
public function testNonAuthenticatedUserIsNotRedirected()
{
$this->authManager->shouldReceive('guard')->with(null)->once()->andReturnSelf();
$this->authManager->shouldReceive('check')->withNoArgs()->once()->andReturn(false);
$this->getMiddleware()->handle($this->request, $this->getClosureAssertions());
}
/**
* Return an instance of the middleware using mocked dependencies.
*/
private function getMiddleware(): RedirectIfAuthenticated
{
return new RedirectIfAuthenticated($this->authManager);
}
}