From 222adb212bbd1f21a30b59c1c3fb0a563b473d95 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 8 Jul 2022 13:38:19 +0200 Subject: [PATCH] fix: permission issues fix: white labaled version --- .dockerignore | 3 +- .gitignore | 3 +- apps/api/src/index.ts | 5 +-- apps/api/src/lib/common.ts | 5 +-- apps/api/src/routes/api/v1/base/index.ts | 19 +++++++++++ apps/api/src/routes/api/v1/handlers.ts | 5 +-- apps/ui/src/lib/store.ts | 7 ++-- apps/ui/src/routes/__layout.svelte | 36 ++++++++++++++++---- package.json | 5 +-- pnpm-lock.yaml | 43 ++++++++++-------------- 10 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 apps/api/src/routes/api/v1/base/index.ts diff --git a/.dockerignore b/.dockerignore index 62248479b..7e5eecf8e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,4 +8,5 @@ package !.env.example dist client -apps/api/db/*.db \ No newline at end of file +apps/api/db/*.db +local-serve \ No newline at end of file diff --git a/.gitignore b/.gitignore index 62248479b..7e5eecf8e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ package !.env.example dist client -apps/api/db/*.db \ No newline at end of file +apps/api/db/*.db +local-serve \ No newline at end of file diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 793504c90..22d9fc81a 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -68,7 +68,8 @@ const schema = { }; const options = { - schema + schema, + dotenv: true }; fastify.register(env, options); if (!isDev) { @@ -76,7 +77,7 @@ if (!isDev) { root: path.join(__dirname, './public'), preCompressed: true }); - fastify.setNotFoundHandler(function (request, reply) { + fastify.setNotFoundHandler({}, function (request, reply) { if (request.raw.url && request.raw.url.startsWith('/api')) { return reply.status(404).send({ success: false diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index b1150ef36..ae8a54741 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -15,6 +15,9 @@ import { checkContainer, getEngine, removeContainer } from './docker'; import { day } from './dayjs'; import * as serviceFields from './serviceFields' +export const version = '3.0.4'; +export const isDev = process.env.NODE_ENV === 'development'; + const algorithm = 'aes-256-ctr'; const customConfig: Config = { dictionaries: [adjectives, colors, animals], @@ -22,8 +25,6 @@ const customConfig: Config = { separator: ' ', length: 3 }; -export const isDev = process.env.NODE_ENV === 'development'; -export const version = '3.0.3'; export const defaultProxyImage = `coolify-haproxy-alpine:latest`; export const defaultProxyImageTcp = `coolify-haproxy-tcp-alpine:latest`; diff --git a/apps/api/src/routes/api/v1/base/index.ts b/apps/api/src/routes/api/v1/base/index.ts new file mode 100644 index 000000000..37972a1a7 --- /dev/null +++ b/apps/api/src/routes/api/v1/base/index.ts @@ -0,0 +1,19 @@ +import { FastifyPluginAsync } from 'fastify'; +import { errorHandler, version } from '../../../../lib/common'; + +const root: FastifyPluginAsync = async (fastify, opts): Promise => { + fastify.get('/', async (request) => { + try { + return { + version, + whiteLabeled: process.env.COOLIFY_WHITE_LABELED === 'true', + whiteLabeledIcon: process.env.COOLIFY_WHITE_LABELED_ICON, + } + } catch ({ status, message }) { + return errorHandler({ status, message }) + } + }); + +}; + +export default root; diff --git a/apps/api/src/routes/api/v1/handlers.ts b/apps/api/src/routes/api/v1/handlers.ts index b998fd4b5..7ba24c461 100644 --- a/apps/api/src/routes/api/v1/handlers.ts +++ b/apps/api/src/routes/api/v1/handlers.ts @@ -258,11 +258,12 @@ export async function getCurrentUser(request: FastifyRequest, fastify) { include: { teams: true, permission: true } }) if (user) { + const permission = user.permission.find(p => p.teamId === request.query.teamId).permission const payload = { ...request.user, teamId: request.query.teamId, - permission: user.permission.find(p => p.teamId === request.query.teamId).permission || null, - isAdmin: user.permission.find(p => p.teamId === request.query.teamId).permission === 'owner' + permission: permission || null, + isAdmin: permission === 'owner' || permission === 'admin' } token = fastify.jwt.sign(payload) diff --git a/apps/ui/src/lib/store.ts b/apps/ui/src/lib/store.ts index f6528a261..668477fa8 100644 --- a/apps/ui/src/lib/store.ts +++ b/apps/ui/src/lib/store.ts @@ -1,8 +1,7 @@ -import { browser } from '$app/env'; import { writable, readable, type Writable, type Readable } from 'svelte/store'; -// import { version as currentVersion } from '../../package.json'; + interface AppSession { - version: string + version: string | null, userId: string | null, teamId: string | null, permission: string, @@ -18,7 +17,7 @@ interface AppSession { } export const loginEmail: Writable = writable() export const appSession: Writable = writable({ - version: '3.0.3', + version: null, userId: null, teamId: null, permission: 'read', diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index 68b624cae..a6932eae0 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -1,12 +1,14 @@