From 4d880c01d072de1aae1b1a16ed1d6bfaa4c2904c Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Thu, 9 Nov 2023 12:45:39 +0700 Subject: [PATCH] Added field user_id verification --- src/logic/open.ts | 4 +++- src/logic/save.ts | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/logic/open.ts b/src/logic/open.ts index 04a455d..ebbcbc1 100644 --- a/src/logic/open.ts +++ b/src/logic/open.ts @@ -15,5 +15,7 @@ export async function loadEntries(date: string): Promise { if (!resp || resp.status !== 200 || !resp.data || !resp.data.time_entries) { throw new Error('Не удалось загрузить записи за дату'); } - return resp.data.time_entries; + return resp.data.time_entries.filter((entry) => { + return entry.user.id === config.redmine.user_id; + }); } diff --git a/src/logic/save.ts b/src/logic/save.ts index 23a93b2..58ec063 100644 --- a/src/logic/save.ts +++ b/src/logic/save.ts @@ -34,10 +34,13 @@ function backupEntries(entries: Record[]): void { fs.writeFileSync(fileName, content, {encoding: "utf8"}); } -async function deleteEntries(entries: Record[]): Promise { +async function deleteEntries(entries: Record[], userId: any): Promise { let i: number; for (i = 0; i < entries.length; i++) { const entry = entries[i]; + if (entry?.user?.id != userId) { + continue; + } const url = `${config.redmine.url}/time_entries/${entry.id}.xml`; if (args['dry']) { console.log('Delete time entry:', {url, entry}); @@ -48,7 +51,7 @@ async function deleteEntries(entries: Record[]): Promise { } } -async function cleanTimeEntries(items: TimeEntryForRedmine[]): Promise { +async function cleanTimeEntries(items: TimeEntryForRedmine[], userId: any): Promise { const dates = getUniqDates(items); for (let i = 0; i < dates.length; i++) { const date = dates[i]; @@ -61,7 +64,7 @@ async function cleanTimeEntries(items: TimeEntryForRedmine[]): Promise { } backupEntries(entries); try { - await deleteEntries(entries); + await deleteEntries(entries, userId); } catch (ex) { console.error(`Ошибка при удалении записей на ${date}`, ex); return; @@ -135,7 +138,13 @@ export async function save(): Promise { if (args['rewrite']) { console.log('Очистка существующих записей...') - await cleanTimeEntries(items); + const userId = config.redmine.user_id; + if (!userId) { + console.error('В конфигурационном файле не указан user_id'); + process.exit(1); + return; + } + await cleanTimeEntries(items, userId); console.log('Очистка существующих записей завершена') } console.log('Сохранение новых записей...');