fix(categories): strip diacritics from auto-generated slugs

Accented chars (ã, ç, é, etc.) were silently dropped by the slug
regex because \w only matches ASCII. NFD decomposition + combining
mark removal converts them to ASCII equivalents instead.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
filpgame
2026-05-16 02:23:03 -03:00
co-authored by Claude Sonnet 4.6
parent 3a490844e1
commit 848430e72b
+6 -2
View File
@@ -56,7 +56,9 @@ router.post('/', adminAuth, requirePermission('settings.edit'), [
const { name, slug, is_global = true, event_id = null } = req.body; const { name, slug, is_global = true, event_id = null } = req.body;
// Generate slug if not provided // Generate slug if not provided
const categorySlug = slug || name.toLowerCase() const categorySlug = slug || name
.normalize('NFD').replace(/[̀-ͯ]/g, '')
.toLowerCase()
.replace(/[^\w\s-]/g, '') .replace(/[^\w\s-]/g, '')
.replace(/\s+/g, '-') .replace(/\s+/g, '-')
.replace(/-+/g, '-') .replace(/-+/g, '-')
@@ -128,7 +130,9 @@ router.put('/:id', adminAuth, requirePermission('settings.edit'), [
const updateData = { const updateData = {
name, name,
slug: name.toLowerCase() slug: name
.normalize('NFD').replace(/[̀-ͯ]/g, '')
.toLowerCase()
.replace(/[^\w\s-]/g, '') .replace(/[^\w\s-]/g, '')
.replace(/\s+/g, '-') .replace(/\s+/g, '-')
.replace(/-+/g, '-') .replace(/-+/g, '-')