From f2523abecce2f9b31617ee53d16487d0ac8af36a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Nov 2021 19:05:09 +0100 Subject: [PATCH 1/3] add server users entity --- database/entity/ServerUser.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 database/entity/ServerUser.ts diff --git a/database/entity/ServerUser.ts b/database/entity/ServerUser.ts new file mode 100644 index 000000000..7f857880e --- /dev/null +++ b/database/entity/ServerUser.ts @@ -0,0 +1,31 @@ +import { BaseEntity, Entity, PrimaryGeneratedColumn, Column } from 'typeorm' + +@Entity('server_users') +export class ServerUser extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ length: 50 }) + username: string + + @Column({ type: 'bigint', unsigned: true }) + password: BigInt + + @Column({ length: 50, unique: true }) + email: string + + @Column({ length: 20, default: 'admin' }) + role: string + + @Column({ length: 20, default: 0 }) + activated: TinyInt + + @Column({ name: 'last_login', default: null, nullable: true }) + lastLogin: Date + + @Column({ name: 'created', default: () => 'CURRENT_TIMESTAMP' }) + created: Date + + @Column({ name: 'created', default: () => 'CURRENT_TIMESTAMP' }) + modified: Date +} From 885a01a1c2bf22156c04ca6bf48826a3469606c6 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Nov 2021 19:09:38 +0100 Subject: [PATCH 2/3] fix data type of activated field --- database/entity/ServerUser.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/entity/ServerUser.ts b/database/entity/ServerUser.ts index 7f857880e..e776093ac 100644 --- a/database/entity/ServerUser.ts +++ b/database/entity/ServerUser.ts @@ -17,8 +17,8 @@ export class ServerUser extends BaseEntity { @Column({ length: 20, default: 'admin' }) role: string - @Column({ length: 20, default: 0 }) - activated: TinyInt + @Column({ default: 0 }) + activated: number @Column({ name: 'last_login', default: null, nullable: true }) lastLogin: Date From 847997542512a4e311ad4d6cdeb64c088ca11cde Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 23 Nov 2021 08:05:52 +0100 Subject: [PATCH 3/3] Since we don't make a request to the login_server we need to catch if user email has been activated. --- backend/src/graphql/resolver/UserResolver.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 25f83bb09..fffd1f7e6 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -207,6 +207,7 @@ export class UserResolver { const loginUser = await loginUserRepository.findByEmail(email).catch(() => { throw new Error('No user with this credentials') }) + if (!loginUser.emailChecked) throw new Error('user email not validated') const passwordHash = SecretKeyCryptographyCreateKey(email, password) // return short and long hash const loginUserPassword = BigInt(loginUser.password.toString()) if (loginUserPassword !== passwordHash[0].readBigUInt64LE()) {