Skip to content

Commit c2121c5

Browse files
Change jury user pages to use external IDs instead of internal IDs
Part of #3024
1 parent 928befb commit c2121c5

File tree

5 files changed

+29
-35
lines changed

5 files changed

+29
-35
lines changed

webapp/src/Controller/Jury/RejudgingController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ public function createAction(Request $request): Response
706706
'problem' => 'p.externalid',
707707
'submission' => 's.externalid',
708708
'team' => 't.externalid',
709-
'user' => 's.user',
709+
'user' => 'u.externalid',
710710
'rejudging' => 'j2.rejudging',
711711
];
712712

@@ -741,6 +741,7 @@ public function createAction(Request $request): Response
741741
->leftJoin('s.language', 'l')
742742
->leftJoin('s.problem', 'p')
743743
->leftJoin('s.team', 't')
744+
->leftJoin('s.user', 'u')
744745
->leftJoin('j.runs', 'jr')
745746
->leftJoin('jr.judgetask', 'jt')
746747
->select('j', 's', 'r', 't')

webapp/src/Controller/Jury/UserController.php

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function indexAction(): Response
6262

6363
$table_fields = [
6464
'username' => ['title' => 'username', 'sort' => true, 'default_sort' => true],
65-
'externalid' => ['title' => 'external ID', 'sort' => true],
65+
'externalid' => ['title' => 'ID', 'sort' => true],
6666
'name' => ['title' => 'name', 'sort' => true],
6767
'email' => ['title' => 'email', 'sort' => true],
6868
'user_roles' => ['title' => 'roles', 'sort' => true],
@@ -86,7 +86,7 @@ public function indexAction(): Response
8686
$userdata = [];
8787
$useractions = [];
8888

89-
$this->addEntityCheckbox($userdata, $u, $u->getUserid(), 'user-checkbox', fn(User $user) => $user->getUserid() !== $this->dj->getUser()->getUserid());
89+
$this->addEntityCheckbox($userdata, $u, $u->getExternalid(), 'user-checkbox', fn(User $user) => $user->getUserid() !== $this->dj->getUser()->getUserid());
9090

9191
// Get whatever fields we can from the user object itself.
9292
foreach ($table_fields as $k => $v) {
@@ -108,9 +108,9 @@ public function indexAction(): Response
108108
];
109109
$userdata['team'] = [
110110
'value' => $u->getTeamName(),
111-
'sortvalue' => $u->getTeam()->getTeamid(),
111+
'sortvalue' => $u->getTeam()->getExternalid(),
112112
'link' => $this->generateUrl('jury_team', [
113-
'teamId' => $u->getTeam()->getTeamid(),
113+
'teamId' => $u->getTeam()->getExternalid(),
114114
]),
115115
'title' => $u->getTeam()->getEffectiveName(),
116116
];
@@ -138,14 +138,14 @@ public function indexAction(): Response
138138
'icon' => 'edit',
139139
'title' => 'edit this user',
140140
'link' => $this->generateUrl('jury_user_edit', [
141-
'userId' => $u->getUserid(),
141+
'userId' => $u->getExternalid(),
142142
])
143143
];
144144
$useractions[] = [
145145
'icon' => 'trash-alt',
146146
'title' => 'delete this user',
147147
'link' => $this->generateUrl('jury_user_delete', [
148-
'userId' => $u->getUserid(),
148+
'userId' => $u->getExternalid(),
149149
]),
150150
'ajaxModal' => true,
151151
];
@@ -163,7 +163,7 @@ public function indexAction(): Response
163163
$users_table[] = [
164164
'data' => $userdata,
165165
'actions' => $useractions,
166-
'link' => $this->generateUrl('jury_user', ['userId' => $u->getUserid()]),
166+
'link' => $this->generateUrl('jury_user', ['userId' => $u->getExternalid()]),
167167
'cssclass' => $u->getEnabled() ? '' : 'disabled',
168168
];
169169
}
@@ -218,10 +218,10 @@ public function checkPasswordLength(User $user, FormInterface $form): ?Response
218218
}
219219

220220
#[IsGranted('ROLE_ADMIN')]
221-
#[Route(path: '/{userId<\d+>}/edit', name: 'jury_user_edit')]
222-
public function editAction(Request $request, int $userId): Response
221+
#[Route(path: '/{userId}/edit', name: 'jury_user_edit')]
222+
public function editAction(Request $request, string $userId): Response
223223
{
224-
$user = $this->em->getRepository(User::class)->find($userId);
224+
$user = $this->em->getRepository(User::class)->findByExternalId($userId);
225225
if (!$user) {
226226
throw new NotFoundHttpException(sprintf('User with ID %s not found', $userId));
227227
}
@@ -247,7 +247,7 @@ public function editAction(Request $request, int $userId): Response
247247
$this->tokenStorage->setToken($token);
248248
}
249249

250-
return $this->redirectToRoute('jury_user', ['userId' => $user->getUserid()]);
250+
return $this->redirectToRoute('jury_user', ['userId' => $user->getExternalid()]);
251251
}
252252

253253
return $this->render('jury/user_edit.html.twig', [
@@ -257,10 +257,10 @@ public function editAction(Request $request, int $userId): Response
257257
}
258258

259259
#[IsGranted('ROLE_ADMIN')]
260-
#[Route(path: '/{userId<\d+>}/delete', name: 'jury_user_delete')]
261-
public function deleteAction(Request $request, int $userId): Response
260+
#[Route(path: '/{userId}/delete', name: 'jury_user_delete')]
261+
public function deleteAction(Request $request, string $userId): Response
262262
{
263-
$user = $this->em->getRepository(User::class)->find($userId);
263+
$user = $this->em->getRepository(User::class)->findByExternalId($userId);
264264
if (!$user) {
265265
throw new NotFoundHttpException(sprintf('User with ID %s not found', $userId));
266266
}
@@ -269,7 +269,7 @@ public function deleteAction(Request $request, int $userId): Response
269269
}
270270

271271
#[IsGranted('ROLE_ADMIN')]
272-
#[Route(path: '/add', name: 'jury_user_add')]
272+
#[Route(path: '/add', name: 'jury_user_add', priority: 1)]
273273
public function addAction(
274274
Request $request,
275275
#[MapQueryParameter]
@@ -286,7 +286,7 @@ public function addAction(
286286

287287
if ($response = $this->processAddFormForExternalIdEntity(
288288
$form, $user,
289-
fn() => $this->generateUrl('jury_user', ['userId' => $user->getUserid()]),
289+
fn() => $this->generateUrl('jury_user', ['userId' => $user->getExternalid()]),
290290
function () use ($user, $form) {
291291
if ($errorResult = $this->checkPasswordLength($user, $form)) {
292292
return $errorResult;
@@ -306,7 +306,7 @@ function () use ($user, $form) {
306306
}
307307

308308
#[IsGranted('ROLE_ADMIN')]
309-
#[Route(path: '/generate-passwords', name: 'jury_generate_passwords')]
309+
#[Route(path: '/generate-passwords', name: 'jury_generate_passwords', priority: 1)]
310310
public function generatePasswordsAction(Request $request): Response
311311
{
312312
$form = $this->createForm(GeneratePasswordsType::class);
@@ -371,7 +371,7 @@ public function generatePasswordsAction(Request $request): Response
371371
}
372372

373373
#[IsGranted('ROLE_ADMIN')]
374-
#[Route(path: '/reset_login_status', name: 'jury_reset_login_status')]
374+
#[Route(path: '/reset_login_status', name: 'jury_reset_login_status', priority: 1)]
375375
public function resetTeamLoginStatus(Request $request): Response
376376
{
377377
/** @var Role $teamRole */
@@ -392,7 +392,7 @@ public function resetTeamLoginStatus(Request $request): Response
392392
}
393393

394394
#[IsGranted('ROLE_ADMIN')]
395-
#[Route(path: '/delete-multiple', name: 'jury_user_delete_multiple', methods: ['GET', 'POST'])]
395+
#[Route(path: '/delete-multiple', name: 'jury_user_delete_multiple', methods: ['GET', 'POST'], priority: 1)]
396396
public function deleteMultipleAction(Request $request): Response
397397
{
398398
return $this->deleteMultiple(

webapp/src/Form/Type/UserType.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
7878
'choice_label' => 'effective_name',
7979
'required' => false,
8080
'placeholder' => '-- no team --',
81+
'choice_value' => 'externalid',
8182
'choices' => $teams,
8283
]);
8384
$builder->add('user_roles', EntityType::class, [

webapp/templates/jury/user.html.twig

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{% extends "jury/base.html.twig" %}
22
{% import "jury/jury_macros.twig" as macros %}
33

4-
{% block title %}User {{ user.userid }} - {{ parent() }}{% endblock %}
4+
{% block title %}User {{ user.externalid }} - {{ parent() }}{% endblock %}
55

66
{% block extrahead %}
77
{{ parent() }}
@@ -18,10 +18,6 @@
1818
<table class="table table-sm table-striped">
1919
<tr>
2020
<th>ID</th>
21-
<td>{{ user.userid }}</td>
22-
</tr>
23-
<tr>
24-
<th>External ID</th>
2521
<td>{{ user.externalid }}</td>
2622
</tr>
2723
<tr>
@@ -78,7 +74,7 @@
7874
<th>Team</th>
7975
{% if user.team %}
8076
<td class="teamid">
81-
<a href="{{ path('jury_team', {'teamId': user.team.teamid}) }}">
77+
<a href="{{ path('jury_team', {'teamId': user.team.externalid}) }}">
8278
{{ user.team.effectiveName }} {{ user.team | entityIdBadge }}
8379
</a>
8480
</td>
@@ -137,10 +133,10 @@
137133

138134
<div class="button-row">
139135
{%- if is_granted('ROLE_ADMIN') -%}
140-
{{ button(path('jury_user_edit', {'userId': user.userid}), 'Edit', 'primary', 'edit') }}
141-
{{ button(path('jury_user_delete', {'userId': user.userid}), 'Delete', 'danger', 'trash-alt', true) }}
136+
{{ button(path('jury_user_edit', {'userId': user.externalid}), 'Edit', 'primary', 'edit') }}
137+
{{ button(path('jury_user_delete', {'userId': user.externalid}), 'Delete', 'danger', 'trash-alt', true) }}
142138
{% endif %}
143-
{% include 'jury/partials/rejudge_form.html.twig' with {table: 'user', id: user.userid, buttonClass: 'btn-secondary'} %}
139+
{% include 'jury/partials/rejudge_form.html.twig' with {table: 'user', id: user.externalid, buttonClass: 'btn-secondary'} %}
144140
</div>
145141

146142
<h2>Submissions for {{ user.name }}</h2>

webapp/templates/jury/user_edit.html.twig

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{% extends "jury/base.html.twig" %}
22
{% import "jury/jury_macros.twig" as macros %}
33

4-
{% block title %}Edit user {{ user.userid }} - {{ parent() }}{% endblock %}
4+
{% block title %}Edit user {{ user.externalid }} - {{ parent() }}{% endblock %}
55

66
{% block extrahead %}
77
{{ parent() }}
@@ -10,15 +10,11 @@
1010

1111
{% block content %}
1212

13-
<h1>Edit user {{ user.userid }}</h1>
13+
<h1>Edit user {{ user.externalid }}</h1>
1414

1515
<div class="row">
1616
<div class="col-lg-4">
1717
<table class="table table-sm table-striped">
18-
<tr>
19-
<th>User ID</th>
20-
<td>{{ user.userid }}</td>
21-
</tr>
2218
<tr>
2319
<th>Username</th>
2420
<td class="teamid">{{ user.username }}</td>

0 commit comments

Comments
 (0)