diff --git a/public/scripts/templates/deleteUser.html b/public/scripts/templates/deleteUser.html
index 35f4cd1fc..6932f3b99 100644
--- a/public/scripts/templates/deleteUser.html
+++ b/public/scripts/templates/deleteUser.html
@@ -16,9 +16,11 @@
This action is irreversible.
-
diff --git a/src/constants.js b/src/constants.js
index 2c5bd5e7d..929e7e7cd 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -50,7 +50,7 @@ const DEFAULT_USER = Object.freeze({
uuid: '00000000-0000-0000-0000-000000000000',
handle: 'user0',
name: 'User',
- created: 0,
+ created: Date.now(),
password: '',
admin: true,
enabled: true,
diff --git a/src/endpoints/users-admin.js b/src/endpoints/users-admin.js
index e3e45afe2..764f5263e 100644
--- a/src/endpoints/users-admin.js
+++ b/src/endpoints/users-admin.js
@@ -157,7 +157,12 @@ router.post('/create', requireAdminMiddleware, jsonParser, async (request, respo
}
const handles = await getAllUserHandles();
- const handle = slugify(request.body.handle, { lower: true, trim: true });
+ const handle = slugify(request.body.handle, { lower: true, trim: true, remove: /[^a-z0-9-]/g });
+
+ if (!handle) {
+ console.log('Create user failed: Invalid handle');
+ return response.status(400).json({ error: 'Invalid handle' });
+ }
if (handles.some(x => x === handle)) {
console.log('Create user failed: User with that handle already exists');