From 6edd95b6b76cf49a9caa9818fb6f20c20255091d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 16 Feb 2022 11:50:14 +0100 Subject: [PATCH 01/57] fix: Never Sent Email Text --- admin/src/components/ConfirmRegisterMailFormular.vue | 6 +++++- admin/src/locales/de.json | 1 + admin/src/locales/en.json | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/admin/src/components/ConfirmRegisterMailFormular.vue b/admin/src/components/ConfirmRegisterMailFormular.vue index 752f4b2cf..58e38f4a0 100644 --- a/admin/src/components/ConfirmRegisterMailFormular.vue +++ b/admin/src/components/ConfirmRegisterMailFormular.vue @@ -3,7 +3,11 @@
{{ $t('unregister_mail.text_true') }}
- {{ $t('unregister_mail.text_false', { date: dateLastSend, mail: email }) }} + {{ + dateLastSend === '' + ? $t('unregister_mail.never_sent', { email }) + : $t('unregister_mail.text_false', { date: dateLastSend, mail: email }) + }} diff --git a/admin/src/locales/de.json b/admin/src/locales/de.json index a490599c8..c99b0c7a9 100644 --- a/admin/src/locales/de.json +++ b/admin/src/locales/de.json @@ -75,6 +75,7 @@ "button": "Registrierungs-Email bestätigen, jetzt senden", "error": "Fehler beim Senden des Bestätigungs-Links an den Benutzer: {message}", "info": "Email bestätigen, wiederholt senden an:", + "never_sent": "Es scheint so, als ob wir nie eine E-Mail an {email} geschickt haben", "success": "Erfolgreiches Senden des Bestätigungs-Links an die E-Mail des Nutzers! ({email})", "text_false": " Die letzte Email wurde am {date} Uhr an das Mitglied ({mail}) gesendet.", "text_true": " Die Email wurde bestätigt." diff --git a/admin/src/locales/en.json b/admin/src/locales/en.json index d98954760..14954ed62 100644 --- a/admin/src/locales/en.json +++ b/admin/src/locales/en.json @@ -75,6 +75,7 @@ "button": "Confirm registration email, send now", "error": "Error sending the confirmation link to the user: {message}", "info": "Confirm email, send repeatedly to:", + "never_sent": "It seems we did never send an email to the member {email}", "success": "Successfully send the confirmation link to the user's email! ({email})", "text_false": "The last email was sent to the member ({mail}) on {date}.", "text_true": "The email was confirmed." From 6f530543287d417ba02c70e4257265978c1d6922 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 16 Feb 2022 11:53:14 +0100 Subject: [PATCH 02/57] adjust variable name --- admin/src/components/ConfirmRegisterMailFormular.vue | 2 +- admin/src/locales/de.json | 2 +- admin/src/locales/en.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/src/components/ConfirmRegisterMailFormular.vue b/admin/src/components/ConfirmRegisterMailFormular.vue index 58e38f4a0..067e95c67 100644 --- a/admin/src/components/ConfirmRegisterMailFormular.vue +++ b/admin/src/components/ConfirmRegisterMailFormular.vue @@ -6,7 +6,7 @@ {{ dateLastSend === '' ? $t('unregister_mail.never_sent', { email }) - : $t('unregister_mail.text_false', { date: dateLastSend, mail: email }) + : $t('unregister_mail.text_false', { date: dateLastSend, email }) }} diff --git a/admin/src/locales/de.json b/admin/src/locales/de.json index c99b0c7a9..956ad7708 100644 --- a/admin/src/locales/de.json +++ b/admin/src/locales/de.json @@ -77,7 +77,7 @@ "info": "Email bestätigen, wiederholt senden an:", "never_sent": "Es scheint so, als ob wir nie eine E-Mail an {email} geschickt haben", "success": "Erfolgreiches Senden des Bestätigungs-Links an die E-Mail des Nutzers! ({email})", - "text_false": " Die letzte Email wurde am {date} Uhr an das Mitglied ({mail}) gesendet.", + "text_false": " Die letzte Email wurde am {date} Uhr an das Mitglied ({email}) gesendet.", "text_true": " Die Email wurde bestätigt." }, "user_search": "Nutzer-Suche" diff --git a/admin/src/locales/en.json b/admin/src/locales/en.json index 14954ed62..f2795c945 100644 --- a/admin/src/locales/en.json +++ b/admin/src/locales/en.json @@ -77,7 +77,7 @@ "info": "Confirm email, send repeatedly to:", "never_sent": "It seems we did never send an email to the member {email}", "success": "Successfully send the confirmation link to the user's email! ({email})", - "text_false": "The last email was sent to the member ({mail}) on {date}.", + "text_false": "The last email was sent to the member ({email}) on {date}.", "text_true": "The email was confirmed." }, "user_search": "User search" From b514539917051f2dfcdb06e5eca5611062fb8f39 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:03:31 +0100 Subject: [PATCH 03/57] add version in footer --- admin/src/components/ContentFooter.vue | 42 ++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/admin/src/components/ContentFooter.vue b/admin/src/components/ContentFooter.vue index 1e7e20f9e..510318e61 100644 --- a/admin/src/components/ContentFooter.vue +++ b/admin/src/components/ContentFooter.vue @@ -1,15 +1,45 @@ From 68d53bc6bc0dbc236cd1ad2159c14c009d015cbe Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:30:17 +0100 Subject: [PATCH 04/57] add go -1 back if 404 page not found in adminarea --- admin/src/components/NotFoundPage.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/src/components/NotFoundPage.vue b/admin/src/components/NotFoundPage.vue index 68a8fb3c4..bc3a02336 100755 --- a/admin/src/components/NotFoundPage.vue +++ b/admin/src/components/NotFoundPage.vue @@ -4,7 +4,7 @@
- +
@@ -1185,6 +1185,9 @@
+
+ zurück +
From f5b533c3fe1b882136b5d312f6f48b7f46df708d Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:30:39 +0100 Subject: [PATCH 05/57] add go -1 back if 404 page not found in frontend wallet --- frontend/src/views/NotFoundPage.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/views/NotFoundPage.vue index 68a8fb3c4..ef2359fed 100755 --- a/frontend/src/views/NotFoundPage.vue +++ b/frontend/src/views/NotFoundPage.vue @@ -4,7 +4,7 @@
From e5c9822fbe243fd1eb563a05b20f0b8e665ca3a0 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:37:50 +0100 Subject: [PATCH 08/57] yarn lint --fix and yarn locales fix in adminarea --- admin/src/components/NotFoundPage.vue | 2 +- admin/src/locales/de.json | 1 + admin/src/locales/en.json | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/admin/src/components/NotFoundPage.vue b/admin/src/components/NotFoundPage.vue index afb603b24..2efa6a4dc 100755 --- a/admin/src/components/NotFoundPage.vue +++ b/admin/src/components/NotFoundPage.vue @@ -1186,7 +1186,7 @@
- zurück + {{ $t('back') }}
diff --git a/admin/src/locales/de.json b/admin/src/locales/de.json index 956ad7708..90a60475c 100644 --- a/admin/src/locales/de.json +++ b/admin/src/locales/de.json @@ -1,5 +1,6 @@ { "all_emails": "Alle Nutzer", + "back": "zurück", "bookmark": "bookmark", "confirmed": "bestätigt", "creation": "Schöpfung", diff --git a/admin/src/locales/en.json b/admin/src/locales/en.json index f2795c945..8775393dd 100644 --- a/admin/src/locales/en.json +++ b/admin/src/locales/en.json @@ -1,5 +1,6 @@ { "all_emails": "All users", + "back": "back", "bookmark": "Remember", "confirmed": "confirmed", "creation": "Creation", From ed6ee0f8235c448510a7af3bd8b945fc5f8ba26b Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:39:06 +0100 Subject: [PATCH 09/57] add locales on back button in PageNotFound --- frontend/src/views/NotFoundPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/views/NotFoundPage.vue index afb603b24..2efa6a4dc 100755 --- a/frontend/src/views/NotFoundPage.vue +++ b/frontend/src/views/NotFoundPage.vue @@ -1186,7 +1186,7 @@
- zurück + {{ $t('back') }}
From f7fa134346f673461656a42fa5a7eb5f5786867d Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 09:57:52 +0100 Subject: [PATCH 10/57] yarn test fixed --- frontend/src/views/NotFoundPage.spec.js | 12 ++++++++++-- frontend/src/views/NotFoundPage.vue | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/NotFoundPage.spec.js b/frontend/src/views/NotFoundPage.spec.js index 709b24807..c14f03b4f 100644 --- a/frontend/src/views/NotFoundPage.spec.js +++ b/frontend/src/views/NotFoundPage.spec.js @@ -3,11 +3,15 @@ import NotFoundPage from './NotFoundPage' const localVue = global.localVue +const mocks = { + $t: jest.fn((t) => t), +} + describe('NotFoundPage', () => { let wrapper const Wrapper = () => { - return mount(NotFoundPage, { localVue }) + return mount(NotFoundPage, { localVue, mocks }) } describe('mount', () => { @@ -16,7 +20,11 @@ describe('NotFoundPage', () => { }) it('has a svg', () => { - expect(wrapper.find('svg').exists()).toBeTruthy() + expect(wrapper.find('svg.test-404').exists()).toBeTruthy() + }) + + it('has a back button', () => { + expect(wrapper.find('.test-back').exists()).toBeTruthy() }) }) }) diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/views/NotFoundPage.vue index 2efa6a4dc..3fe01d091 100755 --- a/frontend/src/views/NotFoundPage.vue +++ b/frontend/src/views/NotFoundPage.vue @@ -9,6 +9,7 @@
- {{ $t('back') }} + + {{ $t('back') }} +
From bc43c495ad342330dae974c5d13f90ae40719c56 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 17 Feb 2022 10:00:02 +0100 Subject: [PATCH 11/57] replace `disabled` (flag) with `deletedAt` (date) on `users` --- .../0023-users_disabled_soft_delete/User.ts | 75 +++++++++++++++++++ database/entity/User.ts | 2 +- .../0023-users_disabled_soft_delete.ts | 26 +++++++ 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 database/entity/0023-users_disabled_soft_delete/User.ts create mode 100644 database/migrations/0023-users_disabled_soft_delete.ts diff --git a/database/entity/0023-users_disabled_soft_delete/User.ts b/database/entity/0023-users_disabled_soft_delete/User.ts new file mode 100644 index 000000000..107b43f18 --- /dev/null +++ b/database/entity/0023-users_disabled_soft_delete/User.ts @@ -0,0 +1,75 @@ +import { + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + OneToMany, + DeleteDateColumn, +} from 'typeorm' +import { UserSetting } from '../UserSetting' + +@Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) +export class User extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ name: 'public_key', type: 'binary', length: 32, default: null, nullable: true }) + pubKey: Buffer + + @Column({ name: 'privkey', type: 'binary', length: 80, default: null, nullable: true }) + privKey: Buffer + + @Column({ length: 255, unique: true, nullable: false, collation: 'utf8mb4_unicode_ci' }) + email: string + + @Column({ + name: 'first_name', + length: 255, + nullable: true, + default: null, + collation: 'utf8mb4_unicode_ci', + }) + firstName: string + + @Column({ + name: 'last_name', + length: 255, + nullable: true, + default: null, + collation: 'utf8mb4_unicode_ci', + }) + lastName: string + + @DeleteDateColumn() + deletedAt: Date + + @Column({ type: 'bigint', default: 0, unsigned: true }) + password: BigInt + + @Column({ name: 'email_hash', type: 'binary', length: 32, default: null, nullable: true }) + emailHash: Buffer + + @Column({ name: 'created', default: () => 'CURRENT_TIMESTAMP', nullable: false }) + createdAt: Date + + @Column({ name: 'email_checked', type: 'bool', nullable: false, default: false }) + emailChecked: boolean + + @Column({ length: 4, default: 'de', collation: 'utf8mb4_unicode_ci', nullable: false }) + language: string + + @Column({ name: 'publisher_id', default: 0 }) + publisherId: number + + @Column({ + type: 'text', + name: 'passphrase', + collation: 'utf8mb4_unicode_ci', + nullable: true, + default: null, + }) + passphrase: string + + @OneToMany(() => UserSetting, (userSetting) => userSetting.user) + settings: UserSetting[] +} diff --git a/database/entity/User.ts b/database/entity/User.ts index 867d63112..d2c201c54 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0020-rename_and_clean_state_users/User' +export { User } from './0023-users_disabled_soft_delete/User' diff --git a/database/migrations/0023-users_disabled_soft_delete.ts b/database/migrations/0023-users_disabled_soft_delete.ts new file mode 100644 index 000000000..2e62d4b71 --- /dev/null +++ b/database/migrations/0023-users_disabled_soft_delete.ts @@ -0,0 +1,26 @@ +/* MIGRATION TO IMPLEMENT SOFT DELETE ON THE USERS TABLE + * + * Replace the `disabled` column with `deletedAt` containing + * a date as it is standard for soft delete fields + */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + // Create new `deletedAt` column + await queryFn( + 'ALTER TABLE `users` ADD COLUMN `deletedAt` datetime DEFAULT NULL AFTER `disabled`;', + ) + + // Insert a 1.1.2022 as date for those users with `disabled=1` + await queryFn('UPDATE `users` SET `deletedAt` = "2022-01-01 00:00:00" WHERE `disabled` = 1;') + + // Delete `disabled` column + await queryFn('ALTER TABLE `users` DROP COLUMN `disabled`;') +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn( + 'ALTER TABLE `users` ADD COLUMN `disabled` tinyint(4) NOT NULL DEFAULT 0 AFTER `deletedAt`;', + ) + await queryFn('UPDATE `users` SET `disabled` = 1 WHERE `deletedAt` IS NOT NULL;') + await queryFn('ALTER TABLE `users` DROP COLUMN `deletedAt`;') +} From f6776576284a19bb110b16744d8e448ef6ba0f25 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 10:01:19 +0100 Subject: [PATCH 12/57] yarn test fixed adminarea --- admin/src/components/NotFoundPage.spec.js | 10 +++++++++- admin/src/components/NotFoundPage.vue | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/admin/src/components/NotFoundPage.spec.js b/admin/src/components/NotFoundPage.spec.js index 709b24807..99eef569b 100644 --- a/admin/src/components/NotFoundPage.spec.js +++ b/admin/src/components/NotFoundPage.spec.js @@ -3,11 +3,15 @@ import NotFoundPage from './NotFoundPage' const localVue = global.localVue +const mocks = { + $t: jest.fn((t) => t), +} + describe('NotFoundPage', () => { let wrapper const Wrapper = () => { - return mount(NotFoundPage, { localVue }) + return mount(NotFoundPage, { localVue, mocks }) } describe('mount', () => { @@ -18,5 +22,9 @@ describe('NotFoundPage', () => { it('has a svg', () => { expect(wrapper.find('svg').exists()).toBeTruthy() }) + + it('has a back button', () => { + expect(wrapper.find('.test-back').exists()).toBeTruthy() + }) }) }) diff --git a/admin/src/components/NotFoundPage.vue b/admin/src/components/NotFoundPage.vue index 2efa6a4dc..b42c3d8bb 100755 --- a/admin/src/components/NotFoundPage.vue +++ b/admin/src/components/NotFoundPage.vue @@ -1186,7 +1186,9 @@
- {{ $t('back') }} + + {{ $t('back') }} +
From a0b8d8266f3fe291d08cb46223ebf3d249edb390 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 10:01:46 +0100 Subject: [PATCH 13/57] yarn test fixed frontend walet --- frontend/src/views/NotFoundPage.spec.js | 2 +- frontend/src/views/NotFoundPage.vue | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/views/NotFoundPage.spec.js b/frontend/src/views/NotFoundPage.spec.js index c14f03b4f..99eef569b 100644 --- a/frontend/src/views/NotFoundPage.spec.js +++ b/frontend/src/views/NotFoundPage.spec.js @@ -20,7 +20,7 @@ describe('NotFoundPage', () => { }) it('has a svg', () => { - expect(wrapper.find('svg.test-404').exists()).toBeTruthy() + expect(wrapper.find('svg').exists()).toBeTruthy() }) it('has a back button', () => { diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/views/NotFoundPage.vue index 3fe01d091..b42c3d8bb 100755 --- a/frontend/src/views/NotFoundPage.vue +++ b/frontend/src/views/NotFoundPage.vue @@ -9,7 +9,6 @@
Date: Thu, 17 Feb 2022 10:08:33 +0100 Subject: [PATCH 14/57] fixed factories --- database/src/factories/user.factory.ts | 2 +- database/src/interface/UserContext.ts | 2 +- database/src/interface/UserInterface.ts | 2 +- database/src/seeds/helpers/user-helpers.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/database/src/factories/user.factory.ts b/database/src/factories/user.factory.ts index 9950ef689..cb2ccb105 100644 --- a/database/src/factories/user.factory.ts +++ b/database/src/factories/user.factory.ts @@ -12,7 +12,7 @@ define(User, (faker: typeof Faker, context?: UserContext) => { user.email = context.email ? context.email : faker.internet.email() user.firstName = context.firstName ? context.firstName : faker.name.firstName() user.lastName = context.lastName ? context.lastName : faker.name.lastName() - user.disabled = context.disabled ? context.disabled : false + user.deletedAt = context.deletedAt ? context.deletedAt : null // TODO Create real password and keys/hash user.password = context.password ? context.password : BigInt(0) user.privKey = context.privKey ? context.privKey : randomBytes(80) diff --git a/database/src/interface/UserContext.ts b/database/src/interface/UserContext.ts index 7ed794793..f3ccaecf4 100644 --- a/database/src/interface/UserContext.ts +++ b/database/src/interface/UserContext.ts @@ -3,7 +3,7 @@ export interface UserContext { email?: string firstName?: string lastName?: string - disabled?: boolean + deletedAt?: Date password?: BigInt privKey?: Buffer emailHash?: Buffer diff --git a/database/src/interface/UserInterface.ts b/database/src/interface/UserInterface.ts index 7e1e2fe48..30b05db38 100644 --- a/database/src/interface/UserInterface.ts +++ b/database/src/interface/UserInterface.ts @@ -10,7 +10,7 @@ export interface UserInterface { createdAt?: Date emailChecked?: boolean language?: string - disabled?: boolean + deletedAt?: Date groupId?: number publisherId?: number passphrase?: string diff --git a/database/src/seeds/helpers/user-helpers.ts b/database/src/seeds/helpers/user-helpers.ts index c40ff1527..74bdd4326 100644 --- a/database/src/seeds/helpers/user-helpers.ts +++ b/database/src/seeds/helpers/user-helpers.ts @@ -42,7 +42,7 @@ const createUserContext = (context: UserInterface): UserContext => { email: context.email, firstName: context.firstName, lastName: context.lastName, - disabled: context.disabled, + deletedAt: context.deletedAt, password: context.password, privKey: context.privKey, emailHash: context.emailHash, From 864f1b085d5ab2e650d9ba5f98e6157b8a445439 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 17 Feb 2022 10:42:31 +0100 Subject: [PATCH 15/57] missing change --- database/entity/0023-users_disabled_soft_delete/User.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0023-users_disabled_soft_delete/User.ts b/database/entity/0023-users_disabled_soft_delete/User.ts index 107b43f18..95fe1b3f7 100644 --- a/database/entity/0023-users_disabled_soft_delete/User.ts +++ b/database/entity/0023-users_disabled_soft_delete/User.ts @@ -41,7 +41,7 @@ export class User extends BaseEntity { lastName: string @DeleteDateColumn() - deletedAt: Date + deletedAt: Date | null @Column({ type: 'bigint', default: 0, unsigned: true }) password: BigInt From 62260857c5b727edde4b40e31b2806a831882d44 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 17 Feb 2022 10:41:00 +0100 Subject: [PATCH 16/57] make a function goback() from router go-1 in frontend wallet --- frontend/src/views/NotFoundPage.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/views/NotFoundPage.vue index b42c3d8bb..f01f76044 100755 --- a/frontend/src/views/NotFoundPage.vue +++ b/frontend/src/views/NotFoundPage.vue @@ -4,7 +4,7 @@
- +
@@ -1186,7 +1186,7 @@
- + {{ $t('back') }}
@@ -1218,6 +1218,11 @@ export default { }, } }, + methods: { + goback() { + this.$router.go(-1) + }, + }, }