From af9c70f169abdf45aca785c52cf839fe77cf37d1 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Mon, 10 Jun 2024 17:43:16 +0300 Subject: [PATCH] Tweaks --- src/colors.css | 1 + src/hooks.server.ts | 2 +- src/lib/components/admin/AdminClientCard.svelte | 4 ++-- src/lib/components/container/MainContainer.svelte | 3 +++ src/lib/components/container/SideContainer.svelte | 3 +++ src/lib/server/drizzle/schema.ts | 1 + src/lib/server/users/tokens.ts | 10 +++++----- src/lib/server/users/totp.ts | 2 +- src/routes/+page.server.ts | 2 ++ src/routes/login/+page.svelte | 9 +++++++-- 10 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/colors.css b/src/colors.css index 00880fc..e9cb0ff 100644 --- a/src/colors.css +++ b/src/colors.css @@ -6,6 +6,7 @@ --in-background-image: none; --in-normalized-background: #cceaff; --in-container-background: #f1faff; + --in-container-shadow: 0px 0px 16px 0px rgba(0, 0, 0, 0.15); --in-text-color: #000000; --in-link-color: #000000; diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 2b064d0..67a2a88 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -25,7 +25,7 @@ const handleThemeHook = (async ({ resolve, event }) => { const newTheme = event.url.searchParams.get('themeMode') as ThemeModeType; const cookieTheme = event.cookies.get('themeMode') as ThemeModeType; - const theme: ThemeModeType | null = newTheme || cookieTheme; + const theme: ThemeModeType = newTheme || cookieTheme; if (theme) { return await resolve(event, { transformPageChunk: ({ html }) => html.replace(/theme-base=""/g, `theme-base="${theme}"`) diff --git a/src/lib/components/admin/AdminClientCard.svelte b/src/lib/components/admin/AdminClientCard.svelte index ff22fe0..8f189dd 100644 --- a/src/lib/components/admin/AdminClientCard.svelte +++ b/src/lib/components/admin/AdminClientCard.svelte @@ -48,8 +48,8 @@
{$t('admin.oauth2.urls.title')}
{#each client.urls as url} - {$t(`admin.oauth2.urls.types.${url.type}`)} <{url.url}>{$t(`admin.oauth2.urls.types.${url.type}`)} <{url.url}> {/each}
diff --git a/src/lib/components/container/MainContainer.svelte b/src/lib/components/container/MainContainer.svelte index 4ffe9d8..f31ef6c 100644 --- a/src/lib/components/container/MainContainer.svelte +++ b/src/lib/components/container/MainContainer.svelte @@ -23,6 +23,9 @@ padding: 40px; max-width: 1080px; width: 100%; + box-shadow: var(--in-container-shadow); + -webkit-box-shadow: var(--in-container-shadow); + -moz-box-shadow: var(--in-container-shadow); } main { diff --git a/src/lib/components/container/SideContainer.svelte b/src/lib/components/container/SideContainer.svelte index 4b8518f..5f6779d 100644 --- a/src/lib/components/container/SideContainer.svelte +++ b/src/lib/components/container/SideContainer.svelte @@ -24,5 +24,8 @@ padding: 40px; max-width: 600px; width: 100%; + box-shadow: var(--in-container-shadow); + -webkit-box-shadow: var(--in-container-shadow); + -moz-box-shadow: var(--in-container-shadow); } diff --git a/src/lib/server/drizzle/schema.ts b/src/lib/server/drizzle/schema.ts index e655381..7cda2ee 100644 --- a/src/lib/server/drizzle/schema.ts +++ b/src/lib/server/drizzle/schema.ts @@ -250,6 +250,7 @@ export const userToken = mysqlTable('user_token', { }); export type UserToken = typeof userToken.$inferSelect; +export type NewUserToken = typeof userToken.$inferInsert; export const auditLogRelations = relations(auditLog, ({ one }) => ({ user: one(user, { diff --git a/src/lib/server/users/tokens.ts b/src/lib/server/users/tokens.ts index 7a63ef2..8549430 100644 --- a/src/lib/server/users/tokens.ts +++ b/src/lib/server/users/tokens.ts @@ -1,24 +1,24 @@ import { and, eq, gt, isNull, or, sql } from 'drizzle-orm'; import { CryptoUtils } from '../crypto-utils'; -import { DB, userToken, type User, type UserToken } from '../drizzle'; +import { DB, userToken, type User, type UserToken, type NewUserToken } from '../drizzle'; export class UserTokens { static async create( - type: (typeof userToken.$inferInsert)['type'], + type: NewUserToken['type'], expires: Date, userId?: number, nonce?: string, metadata?: string ) { const token = CryptoUtils.generateString(64); - const obj = { + const obj = { type, token, userId, expires_at: expires, nonce, metadata - }; + } satisfies NewUserToken; const [retval] = await DB.drizzle.insert(userToken).values(obj); return { id: retval.insertId, ...obj } as UserToken; } @@ -28,7 +28,7 @@ export class UserTokens { await DB.drizzle.delete(userToken).where(eq(userToken.token, removeBy)); } - static async getByToken(token: string, type: (typeof userToken.$inferSelect)['type']) { + static async getByToken(token: string, type: UserToken['type']) { const [returned] = await DB.drizzle .select() .from(userToken) diff --git a/src/lib/server/users/totp.ts b/src/lib/server/users/totp.ts index 720b0a7..1eb9731 100644 --- a/src/lib/server/users/totp.ts +++ b/src/lib/server/users/totp.ts @@ -13,7 +13,7 @@ export class TimeOTP { } public static getUri(secret: string, username: string): string { - return totp.keyuri(username, PUBLIC_SITE_NAME, secret); + return totp.keyuri(username, env.PUBLIC_SITE_NAME, secret); } public static createSecret(): string { diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 7490567..67cba26 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,3 +1,4 @@ +import { env } from '$env/dynamic/private'; import { redirect } from '@sveltejs/kit'; export const actions = { @@ -8,6 +9,7 @@ export const actions = { cookies.set('themeMode', themeMode, { maxAge: 60 * 60 * 24 * 365, httpOnly: true, + secure: env.SESSION_SECURE === 'true', sameSite: 'lax', path: '/' }); diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index a7cb31c..e3488c4 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -1,6 +1,7 @@