fix display name minimum and maximum length
This commit is contained in:
parent
52faf16837
commit
5c95051ddf
3 changed files with 57 additions and 9 deletions
|
|
@ -8,6 +8,18 @@ import { MAX_FILE_SIZE } from '$lib/data/constants';
|
|||
import { isNameAppropriate } from '$lib/server/moderation';
|
||||
|
||||
async function validateInputs(name: string, bio: string, username: string, avatarFile: File | null) {
|
||||
if (!name || !name.trim()) {
|
||||
throw error(400, 'Display name is required');
|
||||
}
|
||||
|
||||
if (name.trim().length < 2) {
|
||||
throw error(400, 'Display name must be at least 2 characters');
|
||||
}
|
||||
|
||||
if (name.trim().length > 50) {
|
||||
throw error(400, 'Display name must be 50 characters or less');
|
||||
}
|
||||
|
||||
if (name && !(await isNameAppropriate(name.trim()))) {
|
||||
throw error(400, 'Name contains inappropriate content');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,15 +7,13 @@ import { isNameAppropriate } from '$lib/server/moderation';
|
|||
export async function GET({ url }) {
|
||||
let username = url.searchParams.get('username')?.toLowerCase().trim();
|
||||
if (!username) {
|
||||
return json({ available: false });
|
||||
return json({ available: false, reason: 'Username is required.' });
|
||||
}
|
||||
|
||||
username = username.trim().replace(/\s+/g, ' ');
|
||||
|
||||
if (username.length < 3 || username.length > 30) {
|
||||
return json({
|
||||
available: false,
|
||||
reason: 'Username must be between 3 and 30 characters'
|
||||
reason: 'Username must be 3-30 characters.'
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -23,17 +21,29 @@ export async function GET({ url }) {
|
|||
if (!alphanumericRegex.test(username)) {
|
||||
return json({
|
||||
available: false,
|
||||
reason: 'Username must contain only lowercase letters, numbers, and underscores'
|
||||
reason: 'Username can only contain lowercase letters, numbers, and underscores.'
|
||||
});
|
||||
}
|
||||
|
||||
const purelyNumericRegex = /^\d+$/;
|
||||
if (purelyNumericRegex.test(username)) {
|
||||
return json({
|
||||
available: false,
|
||||
reason: 'Username cannot be purely numeric.'
|
||||
});
|
||||
}
|
||||
|
||||
if (!(await isNameAppropriate(username))) {
|
||||
return json({ available: false, reason: 'Inappropriate content' });
|
||||
return json({ available: false, reason: 'Username contains inappropriate content.' });
|
||||
}
|
||||
|
||||
const exists = await db.query.user.findFirst({
|
||||
where: eq(user.username, username)
|
||||
});
|
||||
|
||||
return json({ available: !exists });
|
||||
if (exists) {
|
||||
return json({ available: false, reason: 'Username is already taken.' });
|
||||
}
|
||||
|
||||
return json({ available: true });
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue