diff --git a/package.json b/package.json index dc6a12c..a4e9e9a 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "@hono/zod-validator": "^0.2.2", "@iconify-icons/line-md": "^1.2.30", "@iconify-icons/mdi": "^1.2.48", - "@internationalized/date": "^3.5.5", + "@internationalized/date": "^3.5.6", "@lucia-auth/adapter-drizzle": "^1.1.0", "@lukeed/uuid": "^2.0.1", "@neondatabase/serverless": "^0.9.5", @@ -97,7 +97,7 @@ "@types/feather-icons": "^4.29.4", "bits-ui": "^0.21.13", "boardgamegeekclient": "^1.9.1", - "bullmq": "^5.14.0", + "bullmq": "^5.15.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cookie": "^0.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 453dea3..acfa118 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^1.2.48 version: 1.2.48 '@internationalized/date': - specifier: ^3.5.5 - version: 3.5.5 + specifier: ^3.5.6 + version: 3.5.6 '@lucia-auth/adapter-drizzle': specifier: ^1.1.0 version: 1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.10)(pg@8.13.0(pg-native@3.2.0))(postgres@3.4.4))(lucia@3.2.0) @@ -78,8 +78,8 @@ importers: specifier: ^1.9.1 version: 1.9.1 bullmq: - specifier: ^5.14.0 - version: 5.14.0 + specifier: ^5.15.0 + version: 5.15.0 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -1415,8 +1415,8 @@ packages: cpu: [x64] os: [win32] - '@internationalized/date@3.5.5': - resolution: {integrity: sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==} + '@internationalized/date@3.5.6': + resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -2366,8 +2366,8 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bullmq@5.14.0: - resolution: {integrity: sha512-qxZHtRuGEp0oHM1aNokuZ4gA0xr6vcZQPe1OLuQoDTuhaEXB4faxApUoo85v/PHnzrniAAqNT9kqD+UBbmECDQ==} + bullmq@5.15.0: + resolution: {integrity: sha512-h53shVjx8s6wxYGtUfzAfENpSP7N5T0D4PMTvbZncozLjb8yUKhopfpa7PmcpQfq7SSO9dm/OZ9XQuGOCSGNug==} bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -5668,7 +5668,7 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@internationalized/date@3.5.5': + '@internationalized/date@3.5.6': dependencies: '@swc/helpers': 0.5.13 @@ -5746,7 +5746,7 @@ snapshots: dependencies: '@floating-ui/core': 1.6.7 '@floating-ui/dom': 1.6.10 - '@internationalized/date': 3.5.5 + '@internationalized/date': 3.5.6 dequal: 2.0.3 focus-trap: 7.5.4 nanoid: 5.0.7 @@ -5756,7 +5756,7 @@ snapshots: dependencies: '@floating-ui/core': 1.6.7 '@floating-ui/dom': 1.6.10 - '@internationalized/date': 3.5.5 + '@internationalized/date': 3.5.6 dequal: 2.0.3 focus-trap: 7.5.4 nanoid: 5.0.7 @@ -6577,7 +6577,7 @@ snapshots: bits-ui@0.21.15(svelte@5.0.0-next.175): dependencies: - '@internationalized/date': 3.5.5 + '@internationalized/date': 3.5.6 '@melt-ui/svelte': 0.76.2(svelte@5.0.0-next.175) nanoid: 5.0.7 svelte: 5.0.0-next.175 @@ -6631,7 +6631,7 @@ snapshots: buffer-from@1.1.2: {} - bullmq@5.14.0: + bullmq@5.15.0: dependencies: cron-parser: 4.9.0 ioredis: 5.4.1 diff --git a/src/lib/server/api/repositories/collections.repository.ts b/src/lib/server/api/repositories/collections.repository.ts index c351714..7ce1e71 100644 --- a/src/lib/server/api/repositories/collections.repository.ts +++ b/src/lib/server/api/repositories/collections.repository.ts @@ -48,6 +48,11 @@ export class CollectionsRepository { async findAllByUserId(userId: string, db = this.drizzle.db) { return db.query.collections.findMany({ where: eq(collections.user_id, userId), + columns: { + cuid: true, + name: true, + createdAt: true, + }, }) } diff --git a/src/lib/server/api/repositories/recovery-codes.repository.ts b/src/lib/server/api/repositories/recovery-codes.repository.ts index f6ff1e9..9d9e720 100644 --- a/src/lib/server/api/repositories/recovery-codes.repository.ts +++ b/src/lib/server/api/repositories/recovery-codes.repository.ts @@ -16,7 +16,7 @@ export class RecoveryCodesRepository { } async findAllByUserId(userId: string, db = this.drizzle.db) { - return db.query.recoveryCodesTable.findFirst({ + return db.query.recoveryCodesTable.findMany({ where: eq(recoveryCodesTable.userId, userId), }) } diff --git a/src/lib/server/api/repositories/wishlists.repository.ts b/src/lib/server/api/repositories/wishlists.repository.ts index 5667cc2..112f272 100644 --- a/src/lib/server/api/repositories/wishlists.repository.ts +++ b/src/lib/server/api/repositories/wishlists.repository.ts @@ -51,6 +51,7 @@ export class WishlistsRepository { columns: { cuid: true, name: true, + createdAt: true, }, }) } diff --git a/src/lib/server/api/services/totp.service.ts b/src/lib/server/api/services/totp.service.ts index ac0253c..f5f1ca6 100644 --- a/src/lib/server/api/services/totp.service.ts +++ b/src/lib/server/api/services/totp.service.ts @@ -1,5 +1,4 @@ import { CredentialsRepository } from '$lib/server/api/repositories/credentials.repository' -import { HMAC } from 'oslo/crypto' import { decodeHex, encodeHexLowerCase } from '@oslojs/encoding' import { verifyTOTP } from '@oslojs/otp' import { inject, injectable } from 'tsyringe' @@ -22,12 +21,11 @@ export class TotpService { } async create(userId: string) { - const twoFactorSecret = await new HMAC('SHA-1').generateKey() - + const secret = new Uint8Array(20) try { return await this.credentialsRepository.create({ user_id: userId, - secret_data: encodeHexLowerCase(twoFactorSecret), + secret_data: encodeHexLowerCase(crypto.getRandomValues(secret)), type: 'totp', }) } catch (e) { diff --git a/src/routes/(app)/(protected)/collections/+page.svelte b/src/routes/(app)/(protected)/collections/+page.svelte index 6d600b9..63f8d7d 100644 --- a/src/routes/(app)/(protected)/collections/+page.svelte +++ b/src/routes/(app)/(protected)/collections/+page.svelte @@ -1,5 +1,6 @@ @@ -9,14 +10,13 @@ let collections = data?.collections || []
Created at: {new Date(collection.createdAt).toLocaleString()}