Code cleanup for facades
This commit is contained in:
parent
6ffe5730da
commit
92c1c162af
9 changed files with 14 additions and 211 deletions
|
@ -3,22 +3,8 @@
|
||||||
namespace Pterodactyl\Facades;
|
namespace Pterodactyl\Facades;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Pterodactyl\Services\Activity\ActivityLogService;
|
use Pterodactyl\Services\Activity\ActivityLogService;
|
||||||
|
|
||||||
/**
|
|
||||||
* @method static ActivityLogService anonymous()
|
|
||||||
* @method static ActivityLogService event(string $action)
|
|
||||||
* @method static ActivityLogService description(?string $description)
|
|
||||||
* @method static ActivityLogService subject(Model|Model[] $subject)
|
|
||||||
* @method static ActivityLogService actor(Model $actor)
|
|
||||||
* @method static ActivityLogService withRequestMetadata()
|
|
||||||
* @method static ActivityLogService property(string|array $key, mixed $value = null)
|
|
||||||
* @method static \Pterodactyl\Models\ActivityLog log(string $description = null)
|
|
||||||
* @method static ActivityLogService clone()
|
|
||||||
* @method static void reset()
|
|
||||||
* @method static mixed transaction(\Closure $callback)
|
|
||||||
*/
|
|
||||||
class Activity extends Facade
|
class Activity extends Facade
|
||||||
{
|
{
|
||||||
protected static function getFacadeAccessor()
|
protected static function getFacadeAccessor()
|
||||||
|
|
|
@ -5,12 +5,6 @@ namespace Pterodactyl\Facades;
|
||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
use Pterodactyl\Services\Activity\AcitvityLogBatchService;
|
use Pterodactyl\Services\Activity\AcitvityLogBatchService;
|
||||||
|
|
||||||
/**
|
|
||||||
* @method static ?string uuid()
|
|
||||||
* @method static void start()
|
|
||||||
* @method static void end()
|
|
||||||
* @method static mixed transaction(\Closure $callback)
|
|
||||||
*/
|
|
||||||
class LogBatch extends Facade
|
class LogBatch extends Facade
|
||||||
{
|
{
|
||||||
protected static function getFacadeAccessor()
|
protected static function getFacadeAccessor()
|
||||||
|
|
|
@ -5,13 +5,6 @@ namespace Pterodactyl\Facades;
|
||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
use Pterodactyl\Services\Activity\ActivityLogTargetableService;
|
use Pterodactyl\Services\Activity\ActivityLogTargetableService;
|
||||||
|
|
||||||
/**
|
|
||||||
* @method static void setActor(\Illuminate\Database\Eloquent\Model $actor)
|
|
||||||
* @method static void setSubject(\Illuminate\Database\Eloquent\Model $subject)
|
|
||||||
* @method static \Illuminate\Database\Eloquent\Model|null actor()
|
|
||||||
* @method static \Illuminate\Database\Eloquent\Model|null subject()
|
|
||||||
* @method static void reset()
|
|
||||||
*/
|
|
||||||
class LogTarget extends Facade
|
class LogTarget extends Facade
|
||||||
{
|
{
|
||||||
protected static function getFacadeAccessor()
|
protected static function getFacadeAccessor()
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Pterodactyl\Http\Middleware;
|
namespace Pterodactyl\Http\Middleware\Activity;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Pterodactyl\Facades\LogTarget;
|
use Pterodactyl\Facades\LogTarget;
|
||||||
|
|
||||||
class AccountActivitySubject
|
class AccountSubject
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Sets the actor and default subject for all requests passing through this
|
* Sets the actor and default subject for all requests passing through this
|
|
@ -1,13 +1,13 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Pterodactyl\Http\Middleware;
|
namespace Pterodactyl\Http\Middleware\Activity;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Pterodactyl\Models\Server;
|
use Pterodactyl\Models\Server;
|
||||||
use Pterodactyl\Facades\LogTarget;
|
use Pterodactyl\Facades\LogTarget;
|
||||||
|
|
||||||
class ServerActivitySubject
|
class ServerSubject
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Attempts to automatically scope all of the activity log events registered
|
* Attempts to automatically scope all of the activity log events registered
|
|
@ -13,7 +13,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
* @property int $id
|
* @property int $id
|
||||||
* @property int $user_id
|
* @property int $user_id
|
||||||
* @property int $key_type
|
* @property int $key_type
|
||||||
* @property string|null $identifier
|
* @property string $identifier
|
||||||
* @property string $token
|
* @property string $token
|
||||||
* @property array|null $allowed_ips
|
* @property array|null $allowed_ips
|
||||||
* @property string|null $memo
|
* @property string|null $memo
|
||||||
|
|
|
@ -239,5 +239,10 @@ return [
|
||||||
'URL' => Illuminate\Support\Facades\URL::class,
|
'URL' => Illuminate\Support\Facades\URL::class,
|
||||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||||
'View' => Illuminate\Support\Facades\View::class,
|
'View' => Illuminate\Support\Facades\View::class,
|
||||||
|
|
||||||
|
// Custom Facades
|
||||||
|
'Activity' => Pterodactyl\Facades\Activity::class,
|
||||||
|
'LogBatch' => Pterodactyl\Facades\LogBatch::class,
|
||||||
|
'LogTarget' => Pterodactyl\Facades\LogTarget::class,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,175 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Filename & Format
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The default filename (without extension) and the format (php or json)
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'filename' => '_ide_helper',
|
|
||||||
'format' => 'php',
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Fluent helpers
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Set to true to generate commonly used Fluent methods
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'include_fluent' => true,
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Write Model Magic methods
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Set to false to disable write magic methods of model
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'write_model_magic_where' => true,
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Helper files to include
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Include helper files. By default not included, but can be toggled with the
|
|
||||||
| -- helpers (-H) option. Extra helper files can be included.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'include_helpers' => false,
|
|
||||||
|
|
||||||
'helper_files' => [
|
|
||||||
base_path() . '/vendor/laravel/framework/src/Illuminate/Support/helpers.php',
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Model locations to include
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Define in which directories the ide-helper:models command should look
|
|
||||||
| for models.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'model_locations' => [
|
|
||||||
'app/Models',
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Extra classes
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| These implementations are not really extended, but called with magic functions
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'extra' => [
|
|
||||||
'Eloquent' => ['Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'],
|
|
||||||
'Session' => ['Illuminate\Session\Store'],
|
|
||||||
],
|
|
||||||
|
|
||||||
'magic' => [
|
|
||||||
'Log' => [
|
|
||||||
'debug' => 'Monolog\Logger::addDebug',
|
|
||||||
'info' => 'Monolog\Logger::addInfo',
|
|
||||||
'notice' => 'Monolog\Logger::addNotice',
|
|
||||||
'warning' => 'Monolog\Logger::addWarning',
|
|
||||||
'error' => 'Monolog\Logger::addError',
|
|
||||||
'critical' => 'Monolog\Logger::addCritical',
|
|
||||||
'alert' => 'Monolog\Logger::addAlert',
|
|
||||||
'emergency' => 'Monolog\Logger::addEmergency',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Interface implementations
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| These interfaces will be replaced with the implementing class. Some interfaces
|
|
||||||
| are detected by the helpers, others can be listed below.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'interfaces' => [
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Support for custom DB types
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This setting allow you to map any custom database type (that you may have
|
|
||||||
| created using CREATE TYPE statement or imported using database plugin
|
|
||||||
| / extension to a Doctrine type.
|
|
||||||
|
|
|
||||||
| Each key in this array is a name of the Doctrine2 DBAL Platform. Currently valid names are:
|
|
||||||
| 'postgresql', 'db2', 'drizzle', 'mysql', 'oracle', 'sqlanywhere', 'sqlite', 'mssql'
|
|
||||||
|
|
|
||||||
| This name is returned by getName() method of the specific Doctrine/DBAL/Platforms/AbstractPlatform descendant
|
|
||||||
|
|
|
||||||
| The value of the array is an array of type mappings. Key is the name of the custom type,
|
|
||||||
| (for example, "jsonb" from Postgres 9.4) and the value is the name of the corresponding Doctrine2 type (in
|
|
||||||
| our case it is 'json_array'. Doctrine types are listed here:
|
|
||||||
| http://doctrine-dbal.readthedocs.org/en/latest/reference/types.html
|
|
||||||
|
|
|
||||||
| So to support jsonb in your models when working with Postgres, just add the following entry to the array below:
|
|
||||||
|
|
|
||||||
| "postgresql" => array(
|
|
||||||
| "jsonb" => "json_array",
|
|
||||||
| ),
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'custom_db_types' => [
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Support for camel cased models
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| There are some Laravel packages (such as Eloquence) that allow for accessing
|
|
||||||
| Eloquent model properties via camel case, instead of snake case.
|
|
||||||
|
|
|
||||||
| Enabling this option will support these packages by saving all model
|
|
||||||
| properties as camel case, instead of snake case.
|
|
||||||
|
|
|
||||||
| For example, normally you would see this:
|
|
||||||
|
|
|
||||||
| * @property \Carbon\Carbon $created_at
|
|
||||||
| * @property \Carbon\Carbon $updated_at
|
|
||||||
|
|
|
||||||
| With this enabled, the properties will be this:
|
|
||||||
|
|
|
||||||
| * @property \Carbon\Carbon $createdAt
|
|
||||||
| * @property \Carbon\Carbon $updatedAt
|
|
||||||
|
|
|
||||||
| Note, it is currently an all-or-nothing option.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'model_camel_case_properties' => false,
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Property Casts
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Cast the given "real type" to the given "type".
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'type_overrides' => [
|
|
||||||
'integer' => 'int',
|
|
||||||
'boolean' => 'bool',
|
|
||||||
],
|
|
||||||
];
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Pterodactyl\Http\Controllers\Api\Client;
|
use Pterodactyl\Http\Controllers\Api\Client;
|
||||||
use Pterodactyl\Http\Middleware\ServerActivitySubject;
|
use Pterodactyl\Http\Middleware\Activity\ServerSubject;
|
||||||
use Pterodactyl\Http\Middleware\AccountActivitySubject;
|
use Pterodactyl\Http\Middleware\Activity\AccountSubject;
|
||||||
use Pterodactyl\Http\Middleware\RequireTwoFactorAuthentication;
|
use Pterodactyl\Http\Middleware\RequireTwoFactorAuthentication;
|
||||||
use Pterodactyl\Http\Middleware\Api\Client\Server\ResourceBelongsToServer;
|
use Pterodactyl\Http\Middleware\Api\Client\Server\ResourceBelongsToServer;
|
||||||
use Pterodactyl\Http\Middleware\Api\Client\Server\AuthenticateServerAccess;
|
use Pterodactyl\Http\Middleware\Api\Client\Server\AuthenticateServerAccess;
|
||||||
|
@ -19,7 +19,7 @@ use Pterodactyl\Http\Middleware\Api\Client\Server\AuthenticateServerAccess;
|
||||||
Route::get('/', [Client\ClientController::class, 'index'])->name('api:client.index');
|
Route::get('/', [Client\ClientController::class, 'index'])->name('api:client.index');
|
||||||
Route::get('/permissions', [Client\ClientController::class, 'permissions']);
|
Route::get('/permissions', [Client\ClientController::class, 'permissions']);
|
||||||
|
|
||||||
Route::prefix('/account')->middleware(AccountActivitySubject::class)->group(function () {
|
Route::prefix('/account')->middleware(AccountSubject::class)->group(function () {
|
||||||
Route::prefix('/')->withoutMiddleware(RequireTwoFactorAuthentication::class)->group(function () {
|
Route::prefix('/')->withoutMiddleware(RequireTwoFactorAuthentication::class)->group(function () {
|
||||||
Route::get('/', [Client\AccountController::class, 'index'])->name('api:client.account');
|
Route::get('/', [Client\AccountController::class, 'index'])->name('api:client.account');
|
||||||
Route::get('/two-factor', [Client\TwoFactorController::class, 'index']);
|
Route::get('/two-factor', [Client\TwoFactorController::class, 'index']);
|
||||||
|
@ -54,7 +54,7 @@ Route::prefix('/account')->middleware(AccountActivitySubject::class)->group(func
|
||||||
Route::group([
|
Route::group([
|
||||||
'prefix' => '/servers/{server}',
|
'prefix' => '/servers/{server}',
|
||||||
'middleware' => [
|
'middleware' => [
|
||||||
ServerActivitySubject::class,
|
ServerSubject::class,
|
||||||
AuthenticateServerAccess::class,
|
AuthenticateServerAccess::class,
|
||||||
ResourceBelongsToServer::class,
|
ResourceBelongsToServer::class,
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue