Compare commits
3 commits
274025ed33
...
21174fc1ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21174fc1ad | ||
|
|
bbb30f7624 | ||
|
|
5ef2b2bfc0 |
9 changed files with 64 additions and 15 deletions
18
.dockerignore
Normal file
18
.dockerignore
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
node_modules
|
||||||
|
Dockerfile*
|
||||||
|
docker-compose*
|
||||||
|
.dockerignore
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
README.md
|
||||||
|
LICENSE
|
||||||
|
.vscode
|
||||||
|
Makefile
|
||||||
|
helm-charts
|
||||||
|
.editorconfig
|
||||||
|
.idea
|
||||||
|
coverage*
|
||||||
|
.svelte-kit
|
||||||
|
.storybook
|
||||||
|
tbm-m2-dev-90d717d5e58a.json
|
||||||
|
env*
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -24,3 +24,7 @@ vite.config.ts.timestamp-*
|
||||||
|
|
||||||
*storybook.log
|
*storybook.log
|
||||||
storybook-static
|
storybook-static
|
||||||
|
|
||||||
|
tbm-m2-dev-90d717d5e58a.json
|
||||||
|
env*
|
||||||
|
|
||||||
|
|
|
||||||
19
Dockerfile
Normal file
19
Dockerfile
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Stage 1: Build
|
||||||
|
FROM oven/bun:latest AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY . .
|
||||||
|
RUN bun install --frozen-lockfile
|
||||||
|
RUN bun run build
|
||||||
|
|
||||||
|
# Stage 2: Production Runtime
|
||||||
|
FROM oven/bun:latest
|
||||||
|
WORKDIR /app
|
||||||
|
# Copy only necessary files from the builder
|
||||||
|
COPY --from=builder /app/build ./build
|
||||||
|
COPY --from=builder /app/package.json .
|
||||||
|
|
||||||
|
ENV PORT=3167
|
||||||
|
EXPOSE 3167
|
||||||
|
USER bun
|
||||||
|
# Run the application from the build directory
|
||||||
|
CMD ["bun", "build/index.js"]
|
||||||
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
|
|
@ -27,6 +27,7 @@
|
||||||
"@storybook/addon-vitest": "^10.2.0",
|
"@storybook/addon-vitest": "^10.2.0",
|
||||||
"@storybook/sveltekit": "^10.2.0",
|
"@storybook/sveltekit": "^10.2.0",
|
||||||
"@sveltejs/adapter-auto": "^7.0.0",
|
"@sveltejs/adapter-auto": "^7.0.0",
|
||||||
|
"@sveltejs/adapter-node": "^5.5.4",
|
||||||
"@sveltejs/kit": "^2.50.1",
|
"@sveltejs/kit": "^2.50.1",
|
||||||
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
||||||
"@tailwindcss/forms": "^0.5.11",
|
"@tailwindcss/forms": "^0.5.11",
|
||||||
|
|
@ -44,6 +45,7 @@
|
||||||
"prettier-plugin-tailwindcss": "^0.7.2",
|
"prettier-plugin-tailwindcss": "^0.7.2",
|
||||||
"storybook": "^10.2.0",
|
"storybook": "^10.2.0",
|
||||||
"svelte": "^5.48.0",
|
"svelte": "^5.48.0",
|
||||||
|
"svelte-adapter-bun": "^1.0.1",
|
||||||
"svelte-check": "^4.3.5",
|
"svelte-check": "^4.3.5",
|
||||||
"svelte-sonner": "^1.0.7",
|
"svelte-sonner": "^1.0.7",
|
||||||
"tailwind-merge": "^3.4.0",
|
"tailwind-merge": "^3.4.0",
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
{/each} -->
|
{/each} -->
|
||||||
<DropdownMenu.Separator />
|
<DropdownMenu.Separator />
|
||||||
<DropdownMenu.Item class="gap-2 p-2">
|
<DropdownMenu.Item class="gap-2 p-2" onclick={logout}>
|
||||||
<div class="flex size-6 items-center justify-center rounded-md border bg-transparent">
|
<div class="flex size-6 items-center justify-center rounded-md border bg-transparent">
|
||||||
<LogOutIcon class="size-4" />
|
<LogOutIcon class="size-4" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
import { doc, getDoc } from "firebase/firestore";
|
import { doc, getDoc } from 'firebase/firestore';
|
||||||
import { db } from "../client/firebase";
|
import { db } from '../client/firebase';
|
||||||
|
|
||||||
|
|
||||||
export async function checkAllowAccess(userDomain: string): Promise<boolean> {
|
export async function checkAllowAccess(userDomain: string): Promise<boolean> {
|
||||||
|
const docRef = doc(db, 'whitelist', 'allowedDomains');
|
||||||
|
const snapshot = await getDoc(docRef);
|
||||||
|
|
||||||
const docRef = doc(db, "whitelist", "allowedDomains");
|
if (snapshot.exists()) {
|
||||||
const snapshot = await getDoc(docRef);
|
let domains = snapshot.data();
|
||||||
|
// console.log(`domains: ${JSON.stringify(domains)}`);
|
||||||
|
return domains['account_email'].includes(userDomain);
|
||||||
|
}
|
||||||
|
|
||||||
if(snapshot.exists()){
|
return true;
|
||||||
let domains = snapshot.data();
|
}
|
||||||
// console.log(`domains: ${JSON.stringify(domains)}`);
|
|
||||||
return domains["account_email"].includes(userDomain);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
import { env } from '$env/dynamic/public';
|
import { env } from '$env/dynamic/public';
|
||||||
|
|
||||||
|
import { browser } from '$app/environment';
|
||||||
|
import { setCookieOnNonBrowser } from '$lib/helpers/cookie';
|
||||||
|
|
||||||
import { asset } from '$app/paths';
|
import { asset } from '$app/paths';
|
||||||
import TaobinLogo from '$lib/assets/logo.svelte';
|
import TaobinLogo from '$lib/assets/logo.svelte';
|
||||||
import {
|
import {
|
||||||
|
|
@ -59,6 +62,11 @@
|
||||||
//
|
//
|
||||||
console.log('login success!');
|
console.log('login success!');
|
||||||
|
|
||||||
|
if (browser && 'cookieStore' in window) await cookieStore.set('logged_in', 'true');
|
||||||
|
else {
|
||||||
|
setCookieOnNonBrowser('logged_in', 'true');
|
||||||
|
}
|
||||||
|
|
||||||
goto('/entry');
|
goto('/entry');
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import adapter from '@sveltejs/adapter-auto';
|
import adapter from '@sveltejs/adapter-node';
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue