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 @@