Skip to content

Commit 99812b0

Browse files
committed
More subuser Model updates.
1 parent c8f6c93 commit 99812b0

File tree

8 files changed

+54
-55
lines changed

8 files changed

+54
-55
lines changed

app/Http/Controllers/Server/SubuserController.php

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -49,51 +49,35 @@ public function __construct()
4949

5050
public function getIndex(Request $request, $uuid)
5151
{
52-
$server = Models\Server::byUuid($uuid);
52+
$server = Models\Server::byUuid($uuid)->load('subusers.user');
5353
$this->authorize('list-subusers', $server);
5454

5555
$server->js();
5656

5757
return view('server.users.index', [
5858
'server' => $server,
5959
'node' => $server->node,
60-
'subusers' => Models\Subuser::select('subusers.*', 'users.email', 'users.username', 'users.use_totp')
61-
->join('users', 'users.id', '=', 'subusers.user_id')
62-
->where('server_id', $server->id)
63-
->get(),
60+
'subusers' => $server->subusers,
6461
]);
6562
}
6663

6764
public function getView(Request $request, $uuid, $id)
6865
{
69-
$server = Models\Server::byUuid($uuid);
66+
$server = Models\Server::byUuid($uuid)->load('node');
7067
$this->authorize('view-subuser', $server);
7168

72-
$subuser = Models\Subuser::select('subusers.*', 'users.email as a_userEmail')
73-
->join('users', 'users.id', '=', 'subusers.user_id')
74-
->where(DB::raw('md5(subusers.id)'), $id)->where('subusers.server_id', $server->id)
75-
->first();
76-
77-
if (! $subuser) {
78-
abort(404);
79-
}
80-
81-
$permissions = [];
82-
$modelPermissions = Models\Permission::select('permission')
83-
->where('user_id', $subuser->user_id)->where('server_id', $server->id)
84-
->get();
85-
86-
foreach ($modelPermissions as &$perm) {
87-
$permissions[$perm->permission] = true;
88-
}
69+
$subuser = Models\Subuser::with('permissions', 'user')
70+
->where('server_id', $server->id)->findOrFail($id);
8971

9072
$server->js();
9173

9274
return view('server.users.view', [
9375
'server' => $server,
9476
'node' => $server->node,
9577
'subuser' => $subuser,
96-
'permissions' => $permissions,
78+
'permissions' => $subuser->permissions->mapWithKeys(function ($item, $key) {
79+
return [$item->permission => true];
80+
}),
9781
]);
9882
}
9983

@@ -102,12 +86,10 @@ public function postView(Request $request, $uuid, $id)
10286
$server = Models\Server::byUuid($uuid);
10387
$this->authorize('edit-subuser', $server);
10488

105-
$subuser = Models\Subuser::where(DB::raw('md5(id)'), $id)->where('server_id', $server->id)->first();
89+
$subuser = Models\Subuser::where('server_id', $server->id)->findOrFail($id);
10690

10791
try {
108-
if (! $subuser) {
109-
throw new DisplayException('Unable to locate a subuser by that ID.');
110-
} elseif ($subuser->user_id === Auth::user()->id) {
92+
if ($subuser->user_id === Auth::user()->id) {
11193
throw new DisplayException('You are not authorized to edit you own account.');
11294
}
11395

@@ -163,7 +145,7 @@ public function postNew(Request $request, $uuid)
163145

164146
return redirect()->route('server.subusers.view', [
165147
'uuid' => $uuid,
166-
'id' => md5($subuser->id),
148+
'id' => $subuser->id,
167149
]);
168150
} catch (DisplayValidationException $ex) {
169151
return redirect()->route('server.subusers.new', $uuid)->withErrors(json_decode($ex->getMessage()))->withInput();
@@ -183,10 +165,7 @@ public function deleteSubuser(Request $request, $uuid, $id)
183165
$this->authorize('delete-subuser', $server);
184166

185167
try {
186-
$subuser = Models\Subuser::select('id')->where(DB::raw('md5(id)'), $id)->where('server_id', $server->id)->first();
187-
if (! $subuser) {
188-
throw new DisplayException('No subuser by that ID was found on the system.');
189-
}
168+
$subuser = Models\Subuser::where('server_id', $server->id)->findOrFail($id);
190169

191170
$repo = new SubuserRepository;
192171
$repo->delete($subuser->id);

app/Models/Permission.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@
2828

2929
class Permission extends Model
3030
{
31+
32+
/**
33+
* Should timestamps be used on this model.
34+
*
35+
* @var boolean
36+
*/
37+
public $timestamps = false;
38+
3139
/**
3240
* The table associated with the model.
3341
*

app/Models/Server.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,16 @@ public function user()
196196
return $this->belongsTo(User::class, 'owner_id');
197197
}
198198

199+
/**
200+
* Gets the subusers associated with a server.
201+
*
202+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
203+
*/
204+
public function subusers()
205+
{
206+
return $this->hasMany(Subuser::class);
207+
}
208+
199209
/**
200210
* Gets the default allocation for a server.
201211
*

app/Models/Subuser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,6 @@ public function user()
8787
*/
8888
public function permissions()
8989
{
90-
return $this->hasMany(Pemission::class);
90+
return $this->hasMany(Permission::class);
9191
}
9292
}

app/Repositories/SubuserRepository.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ public function create($sid, array $data)
167167
}
168168

169169
Models\Permission::create([
170-
'user_id' => $user->id,
171-
'server_id' => $server->id,
170+
'subuser_id' => $subuser->id,
172171
'permission' => $permission,
173172
]);
174173
}
@@ -213,14 +212,12 @@ public function create($sid, array $data)
213212
*/
214213
public function delete($id)
215214
{
216-
$subuser = Models\Subuser::with('server.node', 'permissions')->findOrFail($id);
215+
$subuser = Models\Subuser::with('server.node')->findOrFail($id);
217216
$server = $subuser->server;
218217

219218
DB::beginTransaction();
220219

221220
try {
222-
Models\Permission::where('user_id', $subuser->user_id)->where('server_id', $subuser->server_id)->delete();
223-
224221
$server->node->guzzleClient([
225222
'X-Access-Server' => $server->uuid,
226223
'X-Access-Token' => $server->node->daemonSecret,
@@ -232,6 +229,9 @@ public function delete($id)
232229
],
233230
]);
234231

232+
foreach($subuser->permissions as &$permission) {
233+
$permission->delete();
234+
}
235235
$subuser->delete();
236236
DB::commit();
237237

@@ -273,7 +273,9 @@ public function update($id, array $data)
273273
DB::beginTransaction();
274274

275275
try {
276-
Models\Permission::where('user_id', $subuser->user_id)->where('server_id', $subuser->server_id)->delete();
276+
foreach($subuser->permissions as &$permission) {
277+
$permission->delete();
278+
}
277279

278280
$daemonPermissions = $this->coreDaemonPermissions;
279281
foreach ($data['permissions'] as $permission) {
@@ -282,13 +284,10 @@ public function update($id, array $data)
282284
if (! is_null($this->permissions[$permission])) {
283285
array_push($daemonPermissions, $this->permissions[$permission]);
284286
}
285-
$model = new Models\Permission;
286-
$model->fill([
287-
'user_id' => $data['user'],
288-
'server_id' => $data['server'],
287+
Models\Permission::create([
288+
'subuser_id' => $subuser->id,
289289
'permission' => $permission,
290290
]);
291-
$model->save();
292291
}
293292
}
294293

database/migrations/2017_02_09_174834_SetupPermissionsPivotTable.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public function up()
3535

3636
$table->dropColumn('server_id');
3737
$table->dropColumn('user_id');
38+
$table->dropColumn('created_at');
39+
$table->dropColumn('updated_at');
3840
$table->foreign('subuser_id')->references('id')->on('subusers');
3941
});
4042
}
@@ -49,6 +51,7 @@ public function down()
4951
Schema::table('permissions', function (Blueprint $table) {
5052
$table->unsignedInteger('server_id')->after('subuser_id');
5153
$table->unsignedInteger('user_id')->after('server_id');
54+
$table->timestamps();
5255
});
5356

5457
DB::transaction(function () {

resources/themes/pterodactyl/server/users/index.blade.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,29 @@
5151
@can('view-subuser', $server)<th></th>@endcan
5252
@can('delete-subuser', $server)<th></th>@endcan
5353
</tr>
54-
@foreach($subusers as $user)
54+
@foreach($subusers as $subuser)
5555
<tr>
56-
<td class="text-center middle"><img class="img-circle" src="https://www.gravatar.com/avatar/{{ md5($user->email) }}?s=128" style="height:20px;" alt="User Image"></td>
57-
<td class="middle">{{ $user->username }}
58-
<td class="middle"><code>{{ $user->email }}</code></td>
56+
<td class="text-center middle"><img class="img-circle" src="https://www.gravatar.com/avatar/{{ md5($subuser->user->email) }}?s=128" style="height:20px;" alt="User Image"></td>
57+
<td class="middle">{{ $subuser->user->username }}
58+
<td class="middle"><code>{{ $subuser->user->email }}</code></td>
5959
<td class="middle text-center">
60-
@if($user->use_totp)
60+
@if($subuser->user->use_totp)
6161
<i class="fa fa-lock text-green"></i>
6262
@else
6363
<i class="fa fa-unlock text-red"></i>
6464
@endif
6565
</td>
66-
<td class="middle hidden-xs">{{ $user->created_at }}</td>
66+
<td class="middle hidden-xs">{{ $subuser->user->created_at }}</td>
6767
@can('view-subuser', $server)
6868
<td class="text-center middle">
69-
<a href="{{ route('server.subusers.view', ['server' => $server->uuidShort, 'id' => md5($user->id)]) }}">
69+
<a href="{{ route('server.subusers.view', ['server' => $server->uuidShort, 'id' => $subuser->id]) }}">
7070
<button class="btn btn-xs btn-primary">@lang('server.users.configure')</button>
7171
</a>
7272
</td>
7373
@endcan
7474
@can('delete-subuser', $server)
7575
<td class="text-center middle">
76-
<a href="#/delete/{{ md5($user->id) }}" data-action="delete" data-id="{{ md5($user->id) }}">
76+
<a href="#/delete/{{ $subuser->id }}" data-action="delete" data-id="{{ $subuser->id }}">
7777
<button class="btn btn-xs btn-danger">@lang('strings.revoke')</button>
7878
</a>
7979
</td>

resources/themes/pterodactyl/server/users/view.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
@section('content')
3737
@can('edit-subuser', $server)
38-
<form action="{{ route('server.subusers.view', [ 'uuid' => $server->uuidShort, 'id' => md5($subuser->id) ]) }}" method="POST">
38+
<form action="{{ route('server.subusers.view', [ 'uuid' => $server->uuidShort, 'id' => $subuser->id ]) }}" method="POST">
3939
@endcan
4040
<div class="row">
4141
<div class="col-sm-12">
@@ -45,7 +45,7 @@
4545
<label class="control-label">@lang('server.users.new.email')</label>
4646
<div>
4747
{!! csrf_field() !!}
48-
<input type="email" class="form-control" disabled value="{{ $subuser->a_userEmail }}" />
48+
<input type="email" class="form-control" disabled value="{{ $subuser->user->email }}" />
4949
</div>
5050
</div>
5151
</div>

0 commit comments

Comments
 (0)