diff --git a/server/src/headers.ts b/server/src/headers.ts index 308a05a75ae68eba3c81ee9791f1f758596ea68f..dd015a6c66e9c7e5391eabc3ecccb1b8dabb0e28 100644 --- a/server/src/headers.ts +++ b/server/src/headers.ts @@ -7,7 +7,18 @@ export function addDefaultHeaders(req: Request, res: Response, next: NextFunctio const origin = req.header('Origin'); if (allowedOrigins.includes('*') || origin && allowedOrigins.includes(origin)) { res.header('Access-Control-Allow-Origin', origin); + const headers = req.header('Access-Control-Request-Headers'); + if (headers) { + res.header('Access-Control-Allow-Headers', headers); + } + res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE'); + res.header('Access-Control-Max-Age', '86400'); + } + if (req.method === 'OPTIONS') { + // Handle preflight requests + res.send(); + } else { + next(); } - next(); } diff --git a/server/src/v1/auth.ts b/server/src/v1/auth.ts index 01e3f0fa18bee2dc932756dad58c010c92d326b1..12f72c29a0790191aa3721c5d960ab955ada8ed7 100644 --- a/server/src/v1/auth.ts +++ b/server/src/v1/auth.ts @@ -69,7 +69,7 @@ auth.post('/register', async (req, res) => { const token = await generateToken({ id: id }); await database('users').insert({ id: id, - user_name: body.username, + user_name: body.username.trim(), passwd_hash: passwdHash, email: body.email ?? null, real_name: body.realname ?? null, @@ -102,7 +102,7 @@ auth.post('/token', async (req, res) => { if (isOfType<TokenBody>(req.body, [['username', 'string'], ['password', 'string']])) { const body: TokenBody = req.body; try { - const user = await database('users').where({ user_name: body.username }); + const user = await database('users').where({ user_name: body.username.trim() }); if (user.length === 1) { if (await compare(body.password, user[0].passwd_hash)) { const token = await generateToken({ id: user[0].id }); @@ -165,7 +165,7 @@ auth.put("/username", async function (req, res) { const body: UsernameBody = req.body; try { await database('users').update({ - user_name: body.username, + user_name: body.username.trim(), }).where({ id: body.token.id, });