#229 notify about abuse reports

This commit is contained in:
Avris 2021-07-24 19:43:17 +02:00
parent c45a8c0bf6
commit 03198f9107
4 changed files with 18 additions and 6 deletions

View File

@ -705,7 +705,7 @@ links:
To nie jest pocisk, jaki myślicie że jest. To nie jest pocisk, jaki myślicie że jest.
- > - >
Nie „autorszcza”, a „autorza”. Można sprawdzić, jakich form używamy: Nie „autorszcza”, a „autorza”. Można sprawdzić, jakich form używamy:
słownik, który krytykujecie jest {/slowniki/neutratywy#autor=na wyciągnięcie ręki}! słownik, który krytykujecie, jest {/slowniki/neutratywy#autor=na wyciągnięcie ręki}!
- > - >
W skrócie: krótki akapit zajawkowy jest naszpikowany manipulacją, sugeruje jakobyśmy nienawidziły polszczyzny, W skrócie: krótki akapit zajawkowy jest naszpikowany manipulacją, sugeruje jakobyśmy nienawidziły polszczyzny,
wkłada słowa w nasze usta i demonstruje brak riserczu na temat, na który piszecie. wkłada słowa w nasze usta i demonstruje brak riserczu na temat, na który piszecie.

View File

@ -113,13 +113,13 @@
<template v-slot:row="s"><template v-if="s"> <template v-slot:row="s"><template v-if="s">
<td> <td>
<a :href="`https://pronouns.page/${s.el.susUsername}`" target="_blank" rel="noopener">@{{s.el.susUsername}}</a> <a :href="`https://pronouns.page/@${s.el.susUsername}`" target="_blank" rel="noopener">@{{s.el.susUsername}}</a>
</td> </td>
<td> <td>
<span v-if="s.el.isAutomatic" class="badge bg-info"> <span v-if="s.el.isAutomatic" class="badge bg-info">
Keyword found Keyword found
</span> </span>
<a v-else :href="`https://pronouns.page/${s.el.reporterUsername}`" target="_blank" rel="noopener">@{{s.el.reporterUsername}}</a> <a v-else :href="`https://pronouns.page/@${s.el.reporterUsername}`" target="_blank" rel="noopener">@{{s.el.reporterUsername}}</a>
<small>({{$datetime($ulidTime(s.el.id))}})</small> <small>({{$datetime($ulidTime(s.el.id))}})</small>
</td> </td>
<td class="small"> <td class="small">

View File

@ -13,7 +13,7 @@ const isGranted = (user, locale, area) => {
return true; return true;
} }
const [ permissionLocale, permissionArea ] = permission.split('-'); const [ permissionLocale, permissionArea ] = permission.split('-');
if ((permissionLocale === '*' || permissionLocale === locale) && (permissionArea === '*' || permissionArea === area)) { if ((permissionLocale === '*' || permissionLocale === locale || locale === null) && (permissionArea === '*' || permissionArea === area)) {
return true; return true;
} }
} }
@ -28,6 +28,7 @@ async function notify() {
...(await db.all(`SELECT 'nouns' as type, locale, count(*) as c FROM nouns WHERE approved = 0 AND deleted=0 GROUP BY locale`)), ...(await db.all(`SELECT 'nouns' as type, locale, count(*) as c FROM nouns WHERE approved = 0 AND deleted=0 GROUP BY locale`)),
...(await db.all(`SELECT 'inclusive' as type, locale, count(*) as c FROM inclusive WHERE approved = 0 AND deleted=0 GROUP BY locale`)), ...(await db.all(`SELECT 'inclusive' as type, locale, count(*) as c FROM inclusive WHERE approved = 0 AND deleted=0 GROUP BY locale`)),
...(await db.all(`SELECT 'sources' as type, locale, count(*) as c FROM sources WHERE approved = 0 AND deleted=0 GROUP BY locale`)), ...(await db.all(`SELECT 'sources' as type, locale, count(*) as c FROM sources WHERE approved = 0 AND deleted=0 GROUP BY locale`)),
...(await db.all(`SELECT 'reports' as type, null as locale, count(*) as c FROM reports WHERE isHandled = 0`)),
]; ];
if (!awaitingModeration.length) { if (!awaitingModeration.length) {
console.log('No entries awaiting moderation'); console.log('No entries awaiting moderation');
@ -44,7 +45,7 @@ async function notify() {
if (awaitingModerationGrouped[admin.email] === undefined) { if (awaitingModerationGrouped[admin.email] === undefined) {
awaitingModerationGrouped[admin.email] = {}; awaitingModerationGrouped[admin.email] = {};
} }
awaitingModerationGrouped[admin.email][m.locale + '-' + m.type] = m.c; awaitingModerationGrouped[admin.email][(m.locale || '*') + '-' + m.type] = m.c;
} }
} }
count += m.c; count += m.c;

View File

@ -130,10 +130,21 @@ router.post('/admin/ban/:username', handleErrorAsync(async (req, res) => {
return res.status(401).json({error: 'Unauthorised'}); return res.status(401).json({error: 'Unauthorised'});
} }
const user = await req.db.get(SQL`SELECT id FROM users WHERE usernameNorm = ${normalise(req.params.username)}`);
if (!user) {
return res.status(400).json({error: 'No such user'});
}
await req.db.get(SQL` await req.db.get(SQL`
UPDATE users UPDATE users
SET bannedReason = ${req.body.reason || null} SET bannedReason = ${req.body.reason || null}
WHERE usernameNorm = ${normalise(req.params.username)} WHERE id = ${user.id}
`);
await req.db.get(SQL`
UPDATE reports
SET isHandled = 1
WHERE userId = ${user.id}
`); `);
return res.json(true); return res.json(true);