diff --git a/twake/backend/node/src/services/documents/services/index.ts b/twake/backend/node/src/services/documents/services/index.ts index d3ab27dd7e..80b072b422 100644 --- a/twake/backend/node/src/services/documents/services/index.ts +++ b/twake/backend/node/src/services/documents/services/index.ts @@ -356,7 +356,7 @@ export class DocumentsService { //In the case of the trash we definitively delete the items if (id === "trash") { //Only administrators can execute this action - const role = await gr.services.companies.getUserRole(context.company.id, context.user.id); + const role = await gr.services.companies.getUserRole(context.company.id, context.user?.id); if (hasCompanyAdminLevel(role) === false) { throw new CrudException("Only administrators can empty the trash", 403); } @@ -538,7 +538,7 @@ export class DocumentsService { ids, version_id: versionId, company_id: context.company.id, - user_id: context.user.id, + user_id: context.user?.id, }); }; diff --git a/twake/backend/node/src/services/documents/utils.ts b/twake/backend/node/src/services/documents/utils.ts index 0e796bdcae..6c320f6758 100644 --- a/twake/backend/node/src/services/documents/utils.ts +++ b/twake/backend/node/src/services/documents/utils.ts @@ -41,10 +41,10 @@ export const getDefaultDriveItem = ( const defaultDriveItem = merge>(new DriveFile(), { company_id: context.company.id, added: item.added || new Date().getTime().toString(), - creator: item.creator || context.user.id, + creator: item.creator || context.user?.id, is_directory: item.is_directory || false, is_in_trash: false, - last_user: item.last_user || context.user.id, + last_user: item.last_user || context.user?.id, last_modified: new Date().getTime().toString(), parent_id: item.parent_id || "root", root_group_folder: item.root_group_folder || "", @@ -64,7 +64,7 @@ export const getDefaultDriveItem = ( level: "none", }, { - id: context.user.id, + id: context.user?.id, type: "user", level: "manage", }, @@ -109,7 +109,7 @@ export const getDefaultDriveItemVersion = ( ): FileVersion => { const defaultVersion = merge(new FileVersion(), { application_id: version.application_id || "", - creator_id: version.creator_id || context.user.id, + creator_id: version.creator_id || context.user?.id, data: version.data || {}, date_added: version.date_added || new Date().getTime(), file_id: version.file_id || "", @@ -173,7 +173,7 @@ export const hasAccessLevel = ( export const isCompanyGuest = async (context: CompanyExecutionContext): Promise => { const userRole = await globalResolver.services.companies.getUserRole( context.company.id, - context.user.id, + context.user?.id, ); return userRole === "guest"; @@ -188,7 +188,7 @@ export const isCompanyGuest = async (context: CompanyExecutionContext): Promise< export const isCompanyAdmin = async (context: CompanyExecutionContext): Promise => { const userRole = await globalResolver.services.companies.getUserRole( context.company.id, - context.user.id, + context.user?.id, ); return userRole === "admin"; @@ -386,7 +386,7 @@ export const getAccessLevel = async ( const accessEntities = item.access_info.entities || []; //Users - const matchingUser = accessEntities.find(a => a.type === "user" && a.id === context.user.id); + const matchingUser = accessEntities.find(a => a.type === "user" && a.id === context.user?.id); if (matchingUser) return matchingUser.level; //Channels diff --git a/twake/backend/node/src/services/documents/web/controllers/documents.ts b/twake/backend/node/src/services/documents/web/controllers/documents.ts index 8406bd8a4a..d1903840f2 100644 --- a/twake/backend/node/src/services/documents/web/controllers/documents.ts +++ b/twake/backend/node/src/services/documents/web/controllers/documents.ts @@ -119,10 +119,12 @@ export class DocumentsController { return { ...(await globalResolver.services.documents.documents.get(id, context)), - websockets: globalResolver.platformServices.realtime.sign( - [{ room: `/companies/${context.company.id}/documents/item/${id}` }], - request.currentUser.id, - ), + websockets: request.currentUser?.id + ? globalResolver.platformServices.realtime.sign( + [{ room: `/companies/${context.company.id}/documents/item/${id}` }], + request.currentUser?.id, + ) + : [], }; };