mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 18:30:15 +01:00
🛡️ fix: Enhance File Upload Security & Error Handling (#4705)
* fix: sanitize filename in multer storage callback * fix: ensure temporary image upload file is deleted after processing * fix: prevent cleanup flag from being set to false before actually deleted * refactor: user avatar, typing, use 'file' for formData instead of 'input', add disk storage, use localization * fix: update Avatar component to include image dimensions in formData and refactor editor reference type * fix: refactor avatar upload handling to use fs for file reading and enhance file validation * fix: ensure temporary image upload file is deleted after processing * fix: refactor avatar upload routes and handlers for agents and assistants, improve file handling and validation * fix: improve audio file validation and cleanup * fix: add filename sanitization utility and integrate it into multer storage configuration * fix: update group project ID check for null and refactor delete prompt group response type * fix: invalid access control for deleting prompt groups * fix: add error handling and logging to checkBan middleware * fix: catch conversation parsing errors * chore: revert unnecessary height and width parameters from avatar upload * chore: update librechat-data-provider version to 0.7.55 * style: ensure KaTeX can spread across visible space
This commit is contained in:
parent
3c94ff2c04
commit
d012da0065
33 changed files with 373 additions and 186 deletions
|
|
@ -34,9 +34,9 @@ export const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;
|
|||
export const conversationsRoot = '/api/convos';
|
||||
|
||||
export const conversations = (pageNumber: string, isArchived?: boolean, tags?: string[]) =>
|
||||
`${conversationsRoot}?pageNumber=${pageNumber}${isArchived ? '&isArchived=true' : ''}${tags
|
||||
?.map((tag) => `&tags=${tag}`)
|
||||
.join('')}`;
|
||||
`${conversationsRoot}?pageNumber=${pageNumber}${
|
||||
isArchived === true ? '&isArchived=true' : ''
|
||||
}${tags?.map((tag) => `&tags=${tag}`).join('')}`;
|
||||
|
||||
export const conversationById = (id: string) => `${conversationsRoot}/${id}`;
|
||||
|
||||
|
|
@ -77,7 +77,8 @@ export const loginFacebook = () => '/api/auth/facebook';
|
|||
|
||||
export const loginGoogle = () => '/api/auth/google';
|
||||
|
||||
export const refreshToken = (retry?: boolean) => `/api/auth/refresh${retry ? '?retry=true' : ''}`;
|
||||
export const refreshToken = (retry?: boolean) =>
|
||||
`/api/auth/refresh${retry === true ? '?retry=true' : ''}`;
|
||||
|
||||
export const requestPasswordReset = () => '/api/auth/requestPasswordReset';
|
||||
|
||||
|
|
@ -94,19 +95,21 @@ export const config = () => '/api/config';
|
|||
export const prompts = () => '/api/prompts';
|
||||
|
||||
export const assistants = ({
|
||||
path,
|
||||
path = '',
|
||||
options,
|
||||
version,
|
||||
endpoint,
|
||||
isAvatar,
|
||||
}: {
|
||||
path?: string;
|
||||
options?: object;
|
||||
endpoint?: AssistantsEndpoint;
|
||||
version: number | string;
|
||||
isAvatar?: boolean;
|
||||
}) => {
|
||||
let url = `/api/assistants/v${version}`;
|
||||
let url = isAvatar === true ? `${images()}/assistants` : `/api/assistants/v${version}`;
|
||||
|
||||
if (path) {
|
||||
if (path && path !== '') {
|
||||
url += `/${path}`;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue