Service refactor to improve organization
This commit is contained in:
parent
761d34f178
commit
2588c25b0b
12 changed files with 79 additions and 42 deletions
|
@ -108,6 +108,14 @@ interface RepositoryInterface
|
||||||
*/
|
*/
|
||||||
public function findWhere(array $fields);
|
public function findWhere(array $fields);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find and return the first matching instance for the given fields.
|
||||||
|
*
|
||||||
|
* @param array $fields
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function findFirstWhere(array $fields);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update a given ID with the passed array of fields.
|
* Update a given ID with the passed array of fields.
|
||||||
*
|
*
|
||||||
|
|
|
@ -28,7 +28,7 @@ use Pterodactyl\Models\Location;
|
||||||
use Pterodactyl\Models\DatabaseHost;
|
use Pterodactyl\Models\DatabaseHost;
|
||||||
use Prologue\Alerts\AlertsMessageBag;
|
use Prologue\Alerts\AlertsMessageBag;
|
||||||
use Pterodactyl\Http\Controllers\Controller;
|
use Pterodactyl\Http\Controllers\Controller;
|
||||||
use Pterodactyl\Services\DatabaseHostService;
|
use Pterodactyl\Services\Administrative\DatabaseHostService;
|
||||||
use Pterodactyl\Http\Requests\Admin\DatabaseHostFormRequest;
|
use Pterodactyl\Http\Requests\Admin\DatabaseHostFormRequest;
|
||||||
|
|
||||||
class DatabaseController extends Controller
|
class DatabaseController extends Controller
|
||||||
|
@ -49,17 +49,17 @@ class DatabaseController extends Controller
|
||||||
protected $locationModel;
|
protected $locationModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\DatabaseHostService
|
* @var \Pterodactyl\Services\Administrative\DatabaseHostService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DatabaseController constructor.
|
* DatabaseController constructor.
|
||||||
*
|
*
|
||||||
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
||||||
* @param \Pterodactyl\Models\DatabaseHost $hostModel
|
* @param \Pterodactyl\Models\DatabaseHost $hostModel
|
||||||
* @param \Pterodactyl\Models\Location $locationModel
|
* @param \Pterodactyl\Models\Location $locationModel
|
||||||
* @param \Pterodactyl\Services\DatabaseHostService $service
|
* @param \Pterodactyl\Services\Administrative\DatabaseHostService $service
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AlertsMessageBag $alert,
|
AlertsMessageBag $alert,
|
||||||
|
|
|
@ -26,10 +26,10 @@ namespace Pterodactyl\Http\Controllers\Admin;
|
||||||
|
|
||||||
use Pterodactyl\Models\Location;
|
use Pterodactyl\Models\Location;
|
||||||
use Prologue\Alerts\AlertsMessageBag;
|
use Prologue\Alerts\AlertsMessageBag;
|
||||||
use Pterodactyl\Services\LocationService;
|
|
||||||
use Pterodactyl\Exceptions\DisplayException;
|
use Pterodactyl\Exceptions\DisplayException;
|
||||||
use Pterodactyl\Http\Controllers\Controller;
|
use Pterodactyl\Http\Controllers\Controller;
|
||||||
use Pterodactyl\Http\Requests\Admin\LocationRequest;
|
use Pterodactyl\Http\Requests\Admin\LocationRequest;
|
||||||
|
use Pterodactyl\Services\Administrative\LocationService;
|
||||||
|
|
||||||
class LocationController extends Controller
|
class LocationController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -44,16 +44,16 @@ class LocationController extends Controller
|
||||||
protected $locationModel;
|
protected $locationModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\LocationService
|
* @var \Pterodactyl\Services\Administrative\\LocationService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LocationController constructor.
|
* LocationController constructor.
|
||||||
*
|
*
|
||||||
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
||||||
* @param \Pterodactyl\Models\Location $locationModel
|
* @param \Pterodactyl\Models\Location $locationModel
|
||||||
* @param \Pterodactyl\Services\LocationService $service
|
* @param \Pterodactyl\Services\Administrative\LocationService $service
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AlertsMessageBag $alert,
|
AlertsMessageBag $alert,
|
||||||
|
|
|
@ -28,7 +28,7 @@ use Illuminate\Http\Request;
|
||||||
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
|
||||||
use Pterodactyl\Models\User;
|
use Pterodactyl\Models\User;
|
||||||
use Prologue\Alerts\AlertsMessageBag;
|
use Prologue\Alerts\AlertsMessageBag;
|
||||||
use Pterodactyl\Services\UserService;
|
use Pterodactyl\Services\Administrative\UserService;
|
||||||
use Pterodactyl\Exceptions\DisplayException;
|
use Pterodactyl\Exceptions\DisplayException;
|
||||||
use Pterodactyl\Http\Controllers\Controller;
|
use Pterodactyl\Http\Controllers\Controller;
|
||||||
use Pterodactyl\Http\Requests\Admin\UserFormRequest;
|
use Pterodactyl\Http\Requests\Admin\UserFormRequest;
|
||||||
|
@ -41,7 +41,7 @@ class UserController extends Controller
|
||||||
protected $alert;
|
protected $alert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\UserService
|
* @var \Pterodactyl\Services\Administrative\UserService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class UserController extends Controller
|
||||||
* UserController constructor.
|
* UserController constructor.
|
||||||
*
|
*
|
||||||
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
||||||
* @param \Pterodactyl\Services\UserService $service
|
* @param \Pterodactyl\Services\Administrative\UserService $service
|
||||||
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
|
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
|
||||||
* @param \Pterodactyl\Models\User $model
|
* @param \Pterodactyl\Models\User $model
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -26,12 +26,13 @@
|
||||||
namespace Pterodactyl\Http\Controllers\Base;
|
namespace Pterodactyl\Http\Controllers\Base;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Pterodactyl\Models\APIKey;
|
|
||||||
use Prologue\Alerts\AlertsMessageBag;
|
use Prologue\Alerts\AlertsMessageBag;
|
||||||
use Pterodactyl\Models\APIPermission;
|
use Pterodactyl\Models\APIPermission;
|
||||||
use Pterodactyl\Services\ApiKeyService;
|
use Pterodactyl\Services\ApiKeyService;
|
||||||
use Pterodactyl\Http\Controllers\Controller;
|
use Pterodactyl\Http\Controllers\Controller;
|
||||||
use Pterodactyl\Http\Requests\ApiKeyRequest;
|
use Pterodactyl\Http\Requests\ApiKeyRequest;
|
||||||
|
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
|
||||||
|
use Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface;
|
||||||
|
|
||||||
class APIController extends Controller
|
class APIController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -41,9 +42,9 @@ class APIController extends Controller
|
||||||
protected $alert;
|
protected $alert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Models\APIKey
|
* @var \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface
|
||||||
*/
|
*/
|
||||||
protected $model;
|
protected $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\ApiKeyService
|
* @var \Pterodactyl\Services\ApiKeyService
|
||||||
|
@ -53,13 +54,17 @@ class APIController extends Controller
|
||||||
/**
|
/**
|
||||||
* APIController constructor.
|
* APIController constructor.
|
||||||
*
|
*
|
||||||
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
* @param \Prologue\Alerts\AlertsMessageBag $alert
|
||||||
* @param \Pterodactyl\Services\ApiKeyService $service
|
* @param \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface $repository
|
||||||
|
* @param \Pterodactyl\Services\ApiKeyService $service
|
||||||
*/
|
*/
|
||||||
public function __construct(AlertsMessageBag $alert, ApiKeyService $service, APIKey $model)
|
public function __construct(
|
||||||
{
|
AlertsMessageBag $alert,
|
||||||
|
ApiKeyRepositoryInterface $repository,
|
||||||
|
ApiKeyService $service
|
||||||
|
) {
|
||||||
$this->alert = $alert;
|
$this->alert = $alert;
|
||||||
$this->model = $model;
|
$this->repository = $repository;
|
||||||
$this->service = $service;
|
$this->service = $service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +77,7 @@ class APIController extends Controller
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
return view('base.api.index', [
|
return view('base.api.index', [
|
||||||
'keys' => APIKey::where('user_id', $request->user()->id)->get(),
|
'keys' => $this->repository->findWhere([['user_id', '=', $request->user()->id]]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,8 +90,8 @@ class APIController extends Controller
|
||||||
{
|
{
|
||||||
return view('base.api.new', [
|
return view('base.api.new', [
|
||||||
'permissions' => [
|
'permissions' => [
|
||||||
'user' => collect(APIPermission::PERMISSIONS)->pull('_user'),
|
'user' => collect(APIPermission::CONST_PERMISSIONS)->pull('_user'),
|
||||||
'admin' => collect(APIPermission::PERMISSIONS)->except('_user')->toArray(),
|
'admin' => collect(APIPermission::CONST_PERMISSIONS)->except('_user')->toArray(),
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -113,7 +118,11 @@ class APIController extends Controller
|
||||||
'memo' => $request->input('memo'),
|
'memo' => $request->input('memo'),
|
||||||
], $request->input('permissions') ?? [], $adminPermissions);
|
], $request->input('permissions') ?? [], $adminPermissions);
|
||||||
|
|
||||||
$this->alert->success('An API Key-Pair has successfully been generated. The API secret for this public key is shown below and will not be shown again.<br /><br /><code>' . $secret . '</code>')->flash();
|
$this->alert->success(
|
||||||
|
"An API Key-Pair has successfully been generated. The API secret
|
||||||
|
for this public key is shown below and will not be shown again.
|
||||||
|
<br /><br /><code>{$secret}</code>"
|
||||||
|
)->flash();
|
||||||
|
|
||||||
return redirect()->route('account.api');
|
return redirect()->route('account.api');
|
||||||
}
|
}
|
||||||
|
@ -127,12 +136,16 @@ class APIController extends Controller
|
||||||
*/
|
*/
|
||||||
public function revoke(Request $request, $key)
|
public function revoke(Request $request, $key)
|
||||||
{
|
{
|
||||||
$key = $this->model->newQuery()
|
try {
|
||||||
->where('user_id', $request->user()->id)
|
$key = $this->repository->withColumns('id')->findFirstWhere([
|
||||||
->where('public', $key)
|
['user_id', '=', $request->user()->id],
|
||||||
->firstOrFail();
|
['public', $key],
|
||||||
|
]);
|
||||||
|
|
||||||
$this->service->revoke($key);
|
$this->service->revoke($key->id);
|
||||||
|
} catch (RecordNotFoundException $ex) {
|
||||||
|
return abort(404);
|
||||||
|
}
|
||||||
|
|
||||||
return response('', 204);
|
return response('', 204);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,10 +83,26 @@ abstract class EloquentRepository extends Repository implements RepositoryInterf
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
|
* @return \Illuminate\Database\Eloquent\Collection
|
||||||
*/
|
*/
|
||||||
public function findWhere(array $fields)
|
public function findWhere(array $fields)
|
||||||
{
|
{
|
||||||
// TODO: Implement findWhere() method.
|
return $this->getBuilder()->where($fields)->get($this->getColumns());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
*/
|
||||||
|
public function findFirstWhere(array $fields)
|
||||||
|
{
|
||||||
|
$instance = $this->getBuilder()->where($fields)->first($this->getColumns());
|
||||||
|
|
||||||
|
if (! $instance) {
|
||||||
|
throw new RecordNotFoundException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Pterodactyl\Services;
|
namespace Pterodactyl\Services\Administrative;
|
||||||
|
|
||||||
use Illuminate\Database\DatabaseManager;
|
use Illuminate\Database\DatabaseManager;
|
||||||
use Illuminate\Contracts\Encryption\Encrypter;
|
use Illuminate\Contracts\Encryption\Encrypter;
|
|
@ -22,7 +22,7 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Pterodactyl\Services;
|
namespace Pterodactyl\Services\Administrative;
|
||||||
|
|
||||||
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Pterodactyl\Services;
|
namespace Pterodactyl\Services\Administrative;
|
||||||
|
|
||||||
use Illuminate\Foundation\Application;
|
use Illuminate\Foundation\Application;
|
||||||
use Illuminate\Contracts\Hashing\Hasher;
|
use Illuminate\Contracts\Hashing\Hasher;
|
|
@ -22,15 +22,15 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Tests\Unit\Services;
|
namespace Tests\Unit\Services\Administrative;
|
||||||
|
|
||||||
use Mockery as m;
|
use Mockery as m;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use Illuminate\Database\DatabaseManager;
|
use Illuminate\Database\DatabaseManager;
|
||||||
use Pterodactyl\Services\DatabaseHostService;
|
|
||||||
use Illuminate\Contracts\Encryption\Encrypter;
|
use Illuminate\Contracts\Encryption\Encrypter;
|
||||||
use Pterodactyl\Extensions\DynamicDatabaseConnection;
|
use Pterodactyl\Extensions\DynamicDatabaseConnection;
|
||||||
use Pterodactyl\Contracts\Repository\DatabaseHostInterface;
|
use Pterodactyl\Contracts\Repository\DatabaseHostInterface;
|
||||||
|
use Pterodactyl\Services\Administrative\DatabaseHostService;
|
||||||
|
|
||||||
class DatabaseHostServiceTest extends TestCase
|
class DatabaseHostServiceTest extends TestCase
|
||||||
{
|
{
|
||||||
|
@ -55,7 +55,7 @@ class DatabaseHostServiceTest extends TestCase
|
||||||
protected $repository;
|
protected $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\DatabaseHostService
|
* @var \Pterodactyl\Services\Administrative\DatabaseHostService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace Tests\Unit\Services;
|
||||||
|
|
||||||
use Mockery as m;
|
use Mockery as m;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use Pterodactyl\Services\LocationService;
|
use Pterodactyl\Services\Administrative\LocationService;
|
||||||
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
|
||||||
|
|
||||||
class LocationServiceTest extends TestCase
|
class LocationServiceTest extends TestCase
|
||||||
|
@ -37,7 +37,7 @@ class LocationServiceTest extends TestCase
|
||||||
protected $repository;
|
protected $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\LocationService
|
* @var \Pterodactyl\Services\Administrative\LocationService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
|
@ -26,12 +26,12 @@ namespace Tests\Unit\Services;
|
||||||
|
|
||||||
use Mockery as m;
|
use Mockery as m;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use Pterodactyl\Services\UserService;
|
|
||||||
use Illuminate\Foundation\Application;
|
use Illuminate\Foundation\Application;
|
||||||
use Illuminate\Contracts\Hashing\Hasher;
|
use Illuminate\Contracts\Hashing\Hasher;
|
||||||
use Illuminate\Database\ConnectionInterface;
|
use Illuminate\Database\ConnectionInterface;
|
||||||
use Illuminate\Notifications\ChannelManager;
|
use Illuminate\Notifications\ChannelManager;
|
||||||
use Pterodactyl\Notifications\AccountCreated;
|
use Pterodactyl\Notifications\AccountCreated;
|
||||||
|
use Pterodactyl\Services\Administrative\UserService;
|
||||||
use Pterodactyl\Services\Helpers\TemporaryPasswordService;
|
use Pterodactyl\Services\Helpers\TemporaryPasswordService;
|
||||||
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ class UserServiceTest extends TestCase
|
||||||
protected $repository;
|
protected $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Pterodactyl\Services\UserService
|
* @var \Pterodactyl\Services\Administrative\UserService
|
||||||
*/
|
*/
|
||||||
protected $service;
|
protected $service;
|
||||||
|
|
Loading…
Reference in a new issue