Skip to content

Commit 275c01b

Browse files
committed
Update user service to be more separated
1 parent 8daec38 commit 275c01b

File tree

12 files changed

+473
-1361
lines changed

12 files changed

+473
-1361
lines changed

app/Contracts/Repository/UserRepositoryInterface.php

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,6 @@ interface UserRepositoryInterface extends RepositoryInterface, SearchableInterfa
3535
*/
3636
public function getAllUsersWithCounts();
3737

38-
/**
39-
* Delete a user if they have no servers attached to their account.
40-
*
41-
* @param int $id
42-
* @return bool
43-
*
44-
* @throws \Pterodactyl\Exceptions\DisplayException
45-
*/
46-
public function deleteIfNoServers($id);
47-
4838
/**
4939
* Return all matching models for a user in a format that can be used for dropdowns.
5040
*

app/Http/Controllers/Admin/UserController.php

Lines changed: 45 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@
2525
namespace Pterodactyl\Http\Controllers\Admin;
2626

2727
use Illuminate\Http\Request;
28-
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
2928
use Pterodactyl\Models\User;
3029
use Prologue\Alerts\AlertsMessageBag;
31-
use Pterodactyl\Services\UserService;
3230
use Pterodactyl\Exceptions\DisplayException;
3331
use Pterodactyl\Http\Controllers\Controller;
32+
use Pterodactyl\Services\Users\UpdateService;
33+
use Pterodactyl\Services\Users\CreationService;
34+
use Pterodactyl\Services\Users\DeletionService;
35+
use Illuminate\Contracts\Translation\Translator;
3436
use Pterodactyl\Http\Requests\Admin\UserFormRequest;
37+
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
3538

3639
class UserController extends Controller
3740
{
@@ -41,53 +44,67 @@ class UserController extends Controller
4144
protected $alert;
4245

4346
/**
44-
* @var \Pterodactyl\Services\UserService
47+
* @var \Pterodactyl\Services\Users\CreationService
4548
*/
46-
protected $service;
49+
protected $creationService;
4750

4851
/**
49-
* @var \Pterodactyl\Models\User
52+
* @var \Pterodactyl\Services\Users\DeletionService
5053
*/
51-
protected $model;
54+
protected $deletionService;
5255

5356
/**
5457
* @var \Pterodactyl\Contracts\Repository\UserRepositoryInterface
5558
*/
5659
protected $repository;
5760

61+
/**
62+
* @var \Illuminate\Contracts\Translation\Translator
63+
*/
64+
protected $translator;
65+
66+
/**
67+
* @var \Pterodactyl\Services\Users\UpdateService
68+
*/
69+
protected $updateService;
70+
5871
/**
5972
* UserController constructor.
6073
*
6174
* @param \Prologue\Alerts\AlertsMessageBag $alert
62-
* @param \Pterodactyl\Services\UserService $service
75+
* @param \Pterodactyl\Services\Users\CreationService $creationService
76+
* @param \Pterodactyl\Services\Users\DeletionService $deletionService
77+
* @param \Illuminate\Contracts\Translation\Translator $translator
78+
* @param \Pterodactyl\Services\Users\UpdateService $updateService
6379
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
64-
* @param \Pterodactyl\Models\User $model
6580
*/
6681
public function __construct(
6782
AlertsMessageBag $alert,
68-
UserService $service,
69-
UserRepositoryInterface $repository,
70-
User $model
83+
CreationService $creationService,
84+
DeletionService $deletionService,
85+
Translator $translator,
86+
UpdateService $updateService,
87+
UserRepositoryInterface $repository
7188
) {
7289
$this->alert = $alert;
73-
$this->service = $service;
74-
$this->model = $model;
90+
$this->creationService = $creationService;
91+
$this->deletionService = $deletionService;
7592
$this->repository = $repository;
93+
$this->translator = $translator;
94+
$this->updateService = $updateService;
7695
}
7796

7897
/**
7998
* Display user index page.
8099
*
81-
* @param \Illuminate\Http\Request $request
100+
* @param \Illuminate\Http\Request $request
82101
* @return \Illuminate\View\View
83102
*/
84103
public function index(Request $request)
85104
{
86105
$users = $this->repository->search($request->input('query'))->getAllUsersWithCounts();
87106

88-
return view('admin.users.index', [
89-
'users' => $users,
90-
]);
107+
return view('admin.users.index', ['users' => $users]);
91108
}
92109

93110
/**
@@ -103,21 +120,19 @@ public function create()
103120
/**
104121
* Display user view page.
105122
*
106-
* @param \Pterodactyl\Models\User $user
123+
* @param \Pterodactyl\Models\User $user
107124
* @return \Illuminate\View\View
108125
*/
109126
public function view(User $user)
110127
{
111-
return view('admin.users.view', [
112-
'user' => $user,
113-
]);
128+
return view('admin.users.view', ['user' => $user]);
114129
}
115130

116131
/**
117132
* Delete a user from the system.
118133
*
119-
* @param \Illuminate\Http\Request $request
120-
* @param \Pterodactyl\Models\User $user
134+
* @param \Illuminate\Http\Request $request
135+
* @param \Pterodactyl\Models\User $user
121136
* @return \Illuminate\Http\RedirectResponse
122137
*
123138
* @throws \Exception
@@ -126,34 +141,27 @@ public function view(User $user)
126141
public function delete(Request $request, User $user)
127142
{
128143
if ($request->user()->id === $user->id) {
129-
throw new DisplayException('Cannot delete your own account.');
144+
throw new DisplayException($this->translator->trans('admin/user.exceptions.user_has_servers'));
130145
}
131146

132-
try {
133-
$this->repository->deleteIfNoServers($user->id);
134-
135-
return redirect()->route('admin.users');
136-
} catch (DisplayException $ex) {
137-
$this->alert->danger($ex->getMessage())->flash();
138-
}
147+
$this->deletionService->handle($user);
139148

140149
return redirect()->route('admin.users.view', $user->id);
141150
}
142151

143152
/**
144153
* Create a user.
145154
*
146-
* @param \Pterodactyl\Http\Requests\Admin\UserFormRequest $request
155+
* @param \Pterodactyl\Http\Requests\Admin\UserFormRequest $request
147156
* @return \Illuminate\Http\RedirectResponse
148157
*
149158
* @throws \Exception
150159
* @throws \Throwable
151160
*/
152161
public function store(UserFormRequest $request)
153162
{
154-
$user = $this->service->create($request->normalize());
155-
156-
$this->alert->success('Account has been successfully created.')->flash();
163+
$user = $this->creationService->handle($request->normalize());
164+
$this->alert->success($this->translator->trans('admin/user.notices.account_created'))->flash();
157165

158166
return redirect()->route('admin.users.view', $user->id);
159167
}
@@ -169,8 +177,8 @@ public function store(UserFormRequest $request)
169177
*/
170178
public function update(UserFormRequest $request, User $user)
171179
{
172-
$this->service->update($user->id, $request->normalize());
173-
$this->alert->success('User account has been updated.')->flash();
180+
$this->updateService->handle($user->id, $request->normalize());
181+
$this->alert->success($this->translator->trans('admin/user.notices.account_updated'))->flash();
174182

175183
return redirect()->route('admin.users.view', $user->id);
176184
}

app/Repositories/Eloquent/UserRepository.php

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
use Illuminate\Contracts\Config\Repository as ConfigRepository;
2828
use Illuminate\Foundation\Application;
2929
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
30-
use Pterodactyl\Exceptions\DisplayException;
31-
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
3230
use Pterodactyl\Models\User;
3331
use Pterodactyl\Repositories\Eloquent\Attributes\SearchableRepository;
3432

@@ -76,24 +74,6 @@ public function getAllUsersWithCounts()
7674
);
7775
}
7876

79-
/**
80-
* {@inheritdoc}
81-
*/
82-
public function deleteIfNoServers($id)
83-
{
84-
$user = $this->getBuilder()->withCount('servers')->where('id', $id)->first();
85-
86-
if (! $user) {
87-
throw new RecordNotFoundException();
88-
}
89-
90-
if ($user->servers_count > 0) {
91-
throw new DisplayException('Cannot delete an account that has active servers attached to it.');
92-
}
93-
94-
return $user->delete();
95-
}
96-
9777
/**
9878
* {@inheritdoc}
9979
*/

0 commit comments

Comments
 (0)