Skip to content

Commit 2588c25

Browse files
committed
Service refactor to improve organization
1 parent 761d34f commit 2588c25

File tree

12 files changed

+79
-42
lines changed

12 files changed

+79
-42
lines changed

app/Contracts/Repository/RepositoryInterface.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,14 @@ public function find($id);
108108
*/
109109
public function findWhere(array $fields);
110110

111+
/**
112+
* Find and return the first matching instance for the given fields.
113+
*
114+
* @param array $fields
115+
* @return mixed
116+
*/
117+
public function findFirstWhere(array $fields);
118+
111119
/**
112120
* Update a given ID with the passed array of fields.
113121
*

app/Http/Controllers/Admin/DatabaseController.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
use Pterodactyl\Models\DatabaseHost;
2929
use Prologue\Alerts\AlertsMessageBag;
3030
use Pterodactyl\Http\Controllers\Controller;
31-
use Pterodactyl\Services\DatabaseHostService;
31+
use Pterodactyl\Services\Administrative\DatabaseHostService;
3232
use Pterodactyl\Http\Requests\Admin\DatabaseHostFormRequest;
3333

3434
class DatabaseController extends Controller
@@ -49,17 +49,17 @@ class DatabaseController extends Controller
4949
protected $locationModel;
5050

5151
/**
52-
* @var \Pterodactyl\Services\DatabaseHostService
52+
* @var \Pterodactyl\Services\Administrative\DatabaseHostService
5353
*/
5454
protected $service;
5555

5656
/**
5757
* DatabaseController constructor.
5858
*
59-
* @param \Prologue\Alerts\AlertsMessageBag $alert
60-
* @param \Pterodactyl\Models\DatabaseHost $hostModel
61-
* @param \Pterodactyl\Models\Location $locationModel
62-
* @param \Pterodactyl\Services\DatabaseHostService $service
59+
* @param \Prologue\Alerts\AlertsMessageBag $alert
60+
* @param \Pterodactyl\Models\DatabaseHost $hostModel
61+
* @param \Pterodactyl\Models\Location $locationModel
62+
* @param \Pterodactyl\Services\Administrative\DatabaseHostService $service
6363
*/
6464
public function __construct(
6565
AlertsMessageBag $alert,

app/Http/Controllers/Admin/LocationController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626

2727
use Pterodactyl\Models\Location;
2828
use Prologue\Alerts\AlertsMessageBag;
29-
use Pterodactyl\Services\LocationService;
3029
use Pterodactyl\Exceptions\DisplayException;
3130
use Pterodactyl\Http\Controllers\Controller;
3231
use Pterodactyl\Http\Requests\Admin\LocationRequest;
32+
use Pterodactyl\Services\Administrative\LocationService;
3333

3434
class LocationController extends Controller
3535
{
@@ -44,16 +44,16 @@ class LocationController extends Controller
4444
protected $locationModel;
4545

4646
/**
47-
* @var \Pterodactyl\Services\LocationService
47+
* @var \Pterodactyl\Services\Administrative\\LocationService
4848
*/
4949
protected $service;
5050

5151
/**
5252
* LocationController constructor.
5353
*
54-
* @param \Prologue\Alerts\AlertsMessageBag $alert
55-
* @param \Pterodactyl\Models\Location $locationModel
56-
* @param \Pterodactyl\Services\LocationService $service
54+
* @param \Prologue\Alerts\AlertsMessageBag $alert
55+
* @param \Pterodactyl\Models\Location $locationModel
56+
* @param \Pterodactyl\Services\Administrative\LocationService $service
5757
*/
5858
public function __construct(
5959
AlertsMessageBag $alert,

app/Http/Controllers/Admin/UserController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
2929
use Pterodactyl\Models\User;
3030
use Prologue\Alerts\AlertsMessageBag;
31-
use Pterodactyl\Services\UserService;
31+
use Pterodactyl\Services\Administrative\UserService;
3232
use Pterodactyl\Exceptions\DisplayException;
3333
use Pterodactyl\Http\Controllers\Controller;
3434
use Pterodactyl\Http\Requests\Admin\UserFormRequest;
@@ -41,7 +41,7 @@ class UserController extends Controller
4141
protected $alert;
4242

4343
/**
44-
* @var \Pterodactyl\Services\UserService
44+
* @var \Pterodactyl\Services\Administrative\UserService
4545
*/
4646
protected $service;
4747

@@ -59,7 +59,7 @@ class UserController extends Controller
5959
* UserController constructor.
6060
*
6161
* @param \Prologue\Alerts\AlertsMessageBag $alert
62-
* @param \Pterodactyl\Services\UserService $service
62+
* @param \Pterodactyl\Services\Administrative\UserService $service
6363
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
6464
* @param \Pterodactyl\Models\User $model
6565
*/

app/Http/Controllers/Base/APIController.php

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626
namespace Pterodactyl\Http\Controllers\Base;
2727

2828
use Illuminate\Http\Request;
29-
use Pterodactyl\Models\APIKey;
3029
use Prologue\Alerts\AlertsMessageBag;
3130
use Pterodactyl\Models\APIPermission;
3231
use Pterodactyl\Services\ApiKeyService;
3332
use Pterodactyl\Http\Controllers\Controller;
3433
use Pterodactyl\Http\Requests\ApiKeyRequest;
34+
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
35+
use Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface;
3536

3637
class APIController extends Controller
3738
{
@@ -41,9 +42,9 @@ class APIController extends Controller
4142
protected $alert;
4243

4344
/**
44-
* @var \Pterodactyl\Models\APIKey
45+
* @var \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface
4546
*/
46-
protected $model;
47+
protected $repository;
4748

4849
/**
4950
* @var \Pterodactyl\Services\ApiKeyService
@@ -53,13 +54,17 @@ class APIController extends Controller
5354
/**
5455
* APIController constructor.
5556
*
56-
* @param \Prologue\Alerts\AlertsMessageBag $alert
57-
* @param \Pterodactyl\Services\ApiKeyService $service
57+
* @param \Prologue\Alerts\AlertsMessageBag $alert
58+
* @param \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface $repository
59+
* @param \Pterodactyl\Services\ApiKeyService $service
5860
*/
59-
public function __construct(AlertsMessageBag $alert, ApiKeyService $service, APIKey $model)
60-
{
61+
public function __construct(
62+
AlertsMessageBag $alert,
63+
ApiKeyRepositoryInterface $repository,
64+
ApiKeyService $service
65+
) {
6166
$this->alert = $alert;
62-
$this->model = $model;
67+
$this->repository = $repository;
6368
$this->service = $service;
6469
}
6570

@@ -72,7 +77,7 @@ public function __construct(AlertsMessageBag $alert, ApiKeyService $service, API
7277
public function index(Request $request)
7378
{
7479
return view('base.api.index', [
75-
'keys' => APIKey::where('user_id', $request->user()->id)->get(),
80+
'keys' => $this->repository->findWhere([['user_id', '=', $request->user()->id]]),
7681
]);
7782
}
7883

@@ -85,8 +90,8 @@ public function create()
8590
{
8691
return view('base.api.new', [
8792
'permissions' => [
88-
'user' => collect(APIPermission::PERMISSIONS)->pull('_user'),
89-
'admin' => collect(APIPermission::PERMISSIONS)->except('_user')->toArray(),
93+
'user' => collect(APIPermission::CONST_PERMISSIONS)->pull('_user'),
94+
'admin' => collect(APIPermission::CONST_PERMISSIONS)->except('_user')->toArray(),
9095
],
9196
]);
9297
}
@@ -113,7 +118,11 @@ public function store(ApiKeyRequest $request)
113118
'memo' => $request->input('memo'),
114119
], $request->input('permissions') ?? [], $adminPermissions);
115120

116-
$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();
121+
$this->alert->success(
122+
"An API Key-Pair has successfully been generated. The API secret
123+
for this public key is shown below and will not be shown again.
124+
<br /><br /><code>{$secret}</code>"
125+
)->flash();
117126

118127
return redirect()->route('account.api');
119128
}
@@ -127,12 +136,16 @@ public function store(ApiKeyRequest $request)
127136
*/
128137
public function revoke(Request $request, $key)
129138
{
130-
$key = $this->model->newQuery()
131-
->where('user_id', $request->user()->id)
132-
->where('public', $key)
133-
->firstOrFail();
139+
try {
140+
$key = $this->repository->withColumns('id')->findFirstWhere([
141+
['user_id', '=', $request->user()->id],
142+
['public', $key],
143+
]);
134144

135-
$this->service->revoke($key);
145+
$this->service->revoke($key->id);
146+
} catch (RecordNotFoundException $ex) {
147+
return abort(404);
148+
}
136149

137150
return response('', 204);
138151
}

app/Repositories/Eloquent/EloquentRepository.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,26 @@ public function find($id)
8383

8484
/**
8585
* {@inheritdoc}
86+
* @return \Illuminate\Database\Eloquent\Collection
8687
*/
8788
public function findWhere(array $fields)
8889
{
89-
// TODO: Implement findWhere() method.
90+
return $this->getBuilder()->where($fields)->get($this->getColumns());
91+
}
92+
93+
/**
94+
* {@inheritdoc}
95+
* @return \Illuminate\Database\Eloquent\Model
96+
*/
97+
public function findFirstWhere(array $fields)
98+
{
99+
$instance = $this->getBuilder()->where($fields)->first($this->getColumns());
100+
101+
if (! $instance) {
102+
throw new RecordNotFoundException();
103+
}
104+
105+
return $instance;
90106
}
91107

92108
/**

app/Services/DatabaseHostService.php renamed to app/Services/Administrative/DatabaseHostService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25-
namespace Pterodactyl\Services;
25+
namespace Pterodactyl\Services\Administrative;
2626

2727
use Illuminate\Database\DatabaseManager;
2828
use Illuminate\Contracts\Encryption\Encrypter;

app/Services/LocationService.php renamed to app/Services/Administrative/LocationService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25-
namespace Pterodactyl\Services;
25+
namespace Pterodactyl\Services\Administrative;
2626

2727
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
2828

app/Services/UserService.php renamed to app/Services/Administrative/UserService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25-
namespace Pterodactyl\Services;
25+
namespace Pterodactyl\Services\Administrative;
2626

2727
use Illuminate\Foundation\Application;
2828
use Illuminate\Contracts\Hashing\Hasher;

tests/Unit/Services/DatabaseHostServiceTest.php renamed to tests/Unit/Services/Administrative/DatabaseHostServiceTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
* SOFTWARE.
2323
*/
2424

25-
namespace Tests\Unit\Services;
25+
namespace Tests\Unit\Services\Administrative;
2626

2727
use Mockery as m;
2828
use Tests\TestCase;
2929
use Illuminate\Database\DatabaseManager;
30-
use Pterodactyl\Services\DatabaseHostService;
3130
use Illuminate\Contracts\Encryption\Encrypter;
3231
use Pterodactyl\Extensions\DynamicDatabaseConnection;
3332
use Pterodactyl\Contracts\Repository\DatabaseHostInterface;
33+
use Pterodactyl\Services\Administrative\DatabaseHostService;
3434

3535
class DatabaseHostServiceTest extends TestCase
3636
{
@@ -55,7 +55,7 @@ class DatabaseHostServiceTest extends TestCase
5555
protected $repository;
5656

5757
/**
58-
* @var \Pterodactyl\Services\DatabaseHostService
58+
* @var \Pterodactyl\Services\Administrative\DatabaseHostService
5959
*/
6060
protected $service;
6161

0 commit comments

Comments
 (0)