(fix) congruent roles for /admin/translations/awaiting

only translations can accept, reject or unapprove
only code can marke translation proposals as done
This commit is contained in:
Valentyne Stigloher 2024-03-07 15:20:02 +01:00
parent 52f305cbf5
commit 8257173dbe
3 changed files with 41 additions and 8 deletions

View File

@ -209,15 +209,36 @@
]"
/>
<AdminDashboardCard
v-if="$isGranted('translations', locale) && (stats[locale].translations.missing > 0 || stats[locale].translations.awaitingApproval > 0 || stats[locale].translations.awaitingMerge > 0)"
v-if="$isGranted('translations', locale) && (stats[locale].translations.missing > 0 || stats[locale].translations.awaitingApproval > 0) || $isGranted('code') && stats[locale].translations.awaitingMerge > 0"
v-show="!filterAttention || stats[locale].translations.missing || stats[locale].translations.awaitingApproval || stats[locale].translations.awaitingMerge"
:base-url="url"
icon="language"
header="Translations"
:counts="[
{ name: 'missing', link: '/admin/translations/missing', count: stats[locale].translations.missing, warning: 1, danger: 16 },
{ name: 'proposed', link: '/admin/translations/awaiting', count: stats[locale].translations.awaitingApproval, warning: 1, danger: 16 },
{ name: 'not merged', link: '/admin/translations/awaiting', count: stats[locale].translations.awaitingMerge, warning: 1, danger: 16, enabled: $isGranted('code') },
{
name: 'missing',
link: '/admin/translations/missing',
count: stats[locale].translations.missing,
warning: 1,
danger: 16,
enabled: $isGranted('translations'),
},
{
name: 'proposed',
link: '/admin/translations/awaiting',
count: stats[locale].translations.awaitingApproval,
warning: 1,
danger: 16,
enabled: $isGranted('translations'),
},
{
name: 'not merged',
link: '/admin/translations/awaiting',
count: stats[locale].translations.awaitingMerge,
warning: 1,
danger: 16,
enabled: $isGranted('code'),
},
]"
/>
</div>

View File

@ -38,16 +38,28 @@
<br>
<template v-if="tp.status === 0">
<span class="badge bg-warning text-white">Awaiting approval</span>
<button class="btn btn-sm btn-outline-success" @click="acceptTranslationProposal(tp.id)">
<button
v-if="$isGranted('translations')"
class="btn btn-sm btn-outline-success"
@click="acceptTranslationProposal(tp.id)"
>
Accept
</button>
<button class="btn btn-sm btn-outline-danger" @click="rejectTranslationProposal(tp.id)">
<button
v-if="$isGranted('translations')"
class="btn btn-sm btn-outline-danger"
@click="rejectTranslationProposal(tp.id)"
>
Reject
</button>
</template>
<template v-else>
<span class="badge bg-success text-white">Approved</span>
<button class="btn btn-sm btn-outline-danger" @click="unapproveTranslationProposal(tp.id)">
<button
v-if="$isGranted('translations')"
class="btn btn-sm btn-outline-danger"
@click="unapproveTranslationProposal(tp.id)"
>
Unapprove
</button>
</template>

View File

@ -116,7 +116,7 @@ router.post('/translations/unapprove-proposal', handleErrorAsync(async (req, res
router.post('/translations/proposals-done', handleErrorAsync(async (req, res) => {
if (!req.isGranted('translations')) {
if (!req.isGranted('code')) {
return res.status(401).json({ error: 'Unauthorised' });
}