From 50d56297a7eff5e7e0fa6794c60b569ec9526b1c Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Mon, 5 Feb 2024 10:16:46 -0500 Subject: [PATCH 01/17] Paths! --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index b3bbb18..e51869f 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -65,7 +65,7 @@ jobs: with: shell_command: /bin/ash -c image: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} - path: /dist + path: /usr/share/nginx/html destination: dist - name: Create a Release uses: https://forgejo.merr.is/actions/forgejo-release@alpinev1 From 823455cf78cf8a8ba69b7a6805e7b242a0cedd23 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Mon, 5 Feb 2024 10:34:06 -0500 Subject: [PATCH 02/17] Going To Disable The Releases For Now... I don't really know how to roll them with a static site like this. --- .forgejo/workflows/build.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index e51869f..6aba9fc 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -58,20 +58,20 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - name: Extract Binary For Release - uses: https://github.com/moosetheory/actions-docker-extract@v3.1 - id: extract - if: startsWith(github.ref, 'refs/tags/') - with: - shell_command: /bin/ash -c - image: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} - path: /usr/share/nginx/html - destination: dist - - name: Create a Release - uses: https://forgejo.merr.is/actions/forgejo-release@alpinev1 - if: startsWith(github.ref, 'refs/tags/') - with: - direction: upload - release-dir: dist - token: ${{ secrets.ADMIN_TOKEN }} + # - name: Extract Binary For Release + # uses: https://github.com/moosetheory/actions-docker-extract@v3.1 + # id: extract + # if: startsWith(github.ref, 'refs/tags/') + # with: + # shell_command: /bin/ash -c + # image: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} + # path: /usr/share/nginx/html + # destination: dist + # - name: Create a Release + # uses: https://forgejo.merr.is/actions/forgejo-release@alpinev1 + # if: startsWith(github.ref, 'refs/tags/') + # with: + # direction: upload + # release-dir: dist + # token: ${{ secrets.ADMIN_TOKEN }} From baf8e0f9546b1003a442714395191b8f06b8038e Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Mon, 5 Feb 2024 21:56:07 -0500 Subject: [PATCH 03/17] Made Changes To Allow The Base API URL To Be From Config --- Dockerfile.dev | 31 -------------------------- bun.lockb | Bin 180269 -> 181040 bytes package.json | 1 + public/config.json | 3 +++ src/main.ts | 19 ++++++++++++---- src/stores/powerItems.ts | 47 +++++++++++++++++++++------------------ 6 files changed, 44 insertions(+), 57 deletions(-) delete mode 100644 Dockerfile.dev create mode 100644 public/config.json diff --git a/Dockerfile.dev b/Dockerfile.dev deleted file mode 100644 index f25be24..0000000 --- a/Dockerfile.dev +++ /dev/null @@ -1,31 +0,0 @@ -# This is making minimal changes from the guide at -# https://bun.sh/guides/ecosystem/docker (as of 2024-02-04) - -# use the official Bun image -# see all versions at https://hub.docker.com/r/oven/bun/tags -FROM oven/bun:1-alpine as base -WORKDIR /app - -# install dependencies into temp directory -# this will cache them and speed up future builds -FROM base as install -RUN mkdir -p /tmp/dev -COPY package.json bun.lockb /temp/dev/ -RUN cd /temp/dev && bun install --frozen-lockfile - -# install with --production (exclude devDependencies) -RUN mkdir -p /temp/prod -COPY package.json bun.lockb /temp/prod/ -RUN cd /temp/prod && bun install --frozen-lockfile --production -# ^ Is this necessary? Don't we either need prod or not prod? - -# copy node_modules from temp directory -# then copy all (non-ignored) project files into the image -FROM base AS prerelease -COPY --from=install /temp/dev/node_modules node_modules -COPY . . - -FROM nginx:stable-alpine as release - -COPY --from=build-stage /app/docker/nginx.conf /etc/nginx/nginx.conf -COPY --from=build-stage /app/dist /usr/share/nginx/html diff --git a/bun.lockb b/bun.lockb index 6e01c21303de51437b0f8cab0452c6982a1c0ee4..4a06b7450b91256856371eaf6c1a7a2e7623f10c 100755 GIT binary patch delta 32208 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 sw%3%8k7k?kkyl<%Dw;A`%^j~d+@<36v(R13 { + console.log(err) + }) diff --git a/src/stores/powerItems.ts b/src/stores/powerItems.ts index f979e49..35dd629 100644 --- a/src/stores/powerItems.ts +++ b/src/stores/powerItems.ts @@ -1,7 +1,22 @@ import type { PowerItem } from '@/types/PowerItem' -import axios from 'axios' +import axios, { type AxiosRequestConfig } from 'axios' import { defineStore } from 'pinia' import { computed, ref, toRaw } from 'vue' +import axiosRetry from 'axios-retry' +import { getCurrentInstance } from 'vue' + +const BLESSING = 1 +const INTIMACY = 2 +const FELLOW = 3 + +const noCacheConfig:AxiosRequestConfig = { + responseType: "json", + headers: { + 'Cache-Control': 'no-cache', + 'Pragma': 'no-cache', + 'Expires': '0', + } +} export const usePowerItems = defineStore('powerItems', () => { const BLESSING_POWER_ITEM_STORAGE = 'BLESSING_POWER_ITEM_STORAGE' @@ -11,16 +26,16 @@ export const usePowerItems = defineStore('powerItems', () => { const fellowPowerItems = ref(new Map()) const intimacyPowerItems = ref(new Map()) const isLoadComplete = ref(false) + const apiBaseUrl = getCurrentInstance()?.appContext.config.globalProperties.$apiBaseUrl + + axiosRetry(axios, { + retries: 3, + retryDelay: axiosRetry.exponentialDelay, + }) async function fetchPowerItems() { axios - .get('/items/blessingPowerItems.json', { - headers: { - 'Cache-Control': 'no-cache', - Pragma: 'no-cache', - Expires: '0' - } - }) + .get(apiBaseUrl + '/powerItem/byType/' + BLESSING + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(BLESSING_POWER_ITEM_STORAGE) || '{}')) @@ -36,13 +51,7 @@ export const usePowerItems = defineStore('powerItems', () => { console.log(err) }) axios - .get('/items/fellowPowerItems.json', { - headers: { - 'Cache-Control': 'no-cache', - Pragma: 'no-cache', - Expires: '0' - } - }) + .get(apiBaseUrl + '/powerItem/byType/' + FELLOW + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(FELLOW_POWER_ITEM_STORAGE) || '{}')) @@ -58,13 +67,7 @@ export const usePowerItems = defineStore('powerItems', () => { console.log(err) }) axios - .get('/items/intimacyPowerItems.json', { - headers: { - 'Cache-Control': 'no-cache', - Pragma: 'no-cache', - Expires: '0' - } - }) + .get(apiBaseUrl + '/powerItem/byType/' + INTIMACY + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(INTIMACY_POWER_ITEM_STORAGE) || '{}')) From a1aa171bb1d50ab73468b64a6f54c81b1f48f93d Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Sat, 10 Feb 2024 17:33:57 -0500 Subject: [PATCH 04/17] Syncing Lots Of Auth Tweaks --- bun.lockb | Bin 181040 -> 183951 bytes package.json | 1 + public/config.json | 2 +- src/main.ts | 44 +++++++++++++++++--------- src/router/index.ts | 37 +++++++++++++++++----- src/services/zitadelAuth.ts | 46 +++++++++++++++++++++++++++ src/stores/powerItems.ts | 13 +++++--- src/types/ConfigSymbols.ts | 7 +++++ src/views/Admin.vue | 22 +++++++++++++ src/views/Login.vue | 61 ++++++++++++++++++++++++++++++++++++ src/views/NoAccess.vue | 22 +++++++++++++ 11 files changed, 227 insertions(+), 28 deletions(-) create mode 100644 src/services/zitadelAuth.ts create mode 100644 src/types/ConfigSymbols.ts create mode 100644 src/views/Admin.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/NoAccess.vue diff --git a/bun.lockb b/bun.lockb index 4a06b7450b91256856371eaf6c1a7a2e7623f10c..24df2e462f64d911397a85b35b043772e3a9c37f 100755 GIT binary patch delta 34305 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 { - console.log(err) - }) + app.use(router) + app.use(vuetify) + app.use(pinia) + + app.config.globalProperties.$zitadel = zitadelAuth + + // Fetch my config + axios + .get('/config.json?noCache=' + Date.now()) + .then((resp) => { + app.provide(apiBaseURL, resp.data.apiBaseURL) + + app.mount('#app') + }) + .catch((err) => { + console.log(err) + }) +}) diff --git a/src/router/index.ts b/src/router/index.ts index ad0cbae..bbdb682 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,3 +1,4 @@ +import zitadelAuth from '@/services/zitadelAuth' import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ @@ -9,26 +10,46 @@ const router = createRouter({ component: () => import('@/views/HomeView.vue') }, { - path: "/blessing-power", - name: "blessing-power", + path: '/blessing-power', + name: 'blessing-power', component: () => import('@/views/BlessingPowerView.vue') }, { - path: "/fellow-power", - name: "fellow-power", + path: '/fellow-power', + name: 'fellow-power', component: () => import('@/views/FellowPowerView.vue') }, { - path: "/intimacy-power", - name: "intimacy-power", + path: '/intimacy-power', + name: 'intimacy-power', component: () => import('@/views/IntimacyPowerView.vue') }, { - path: "/test", - name: "test", + path: '/test', + name: 'test', component: () => import('@/views/Test.vue') + }, + + { + path: '/login', + name: 'login', + meta: { + authName: zitadelAuth.oidcAuth.authName + }, + component: () => import('@/views/Login.vue') + }, + { + path: '/admin', + name: 'admin', + meta: { + authName: zitadelAuth.oidcAuth.authName + }, + component: () => + zitadelAuth.hasRole('admin') ? import('@/views/Admin.vue') : import('@/views/NoAccess.vue') } ] }) +zitadelAuth.oidcAuth.useRouter(router) + export default router diff --git a/src/services/zitadelAuth.ts b/src/services/zitadelAuth.ts new file mode 100644 index 0000000..f22420e --- /dev/null +++ b/src/services/zitadelAuth.ts @@ -0,0 +1,46 @@ +import {createZITADELAuth} from "@zitadel/vue"; +import {User} from "oidc-client"; + +const zitadelAuth = createZITADELAuth({ + project_resource_id: '252968011466539011', + client_id: "252968365600079875@isl", + issuer: "http://localhost:8080/", +}) + +// handle events +zitadelAuth.oidcAuth.events.addAccessTokenExpiring(function() { + // eslint-disable-next-line no-console + console.log('access token expiring') +}) + +zitadelAuth.oidcAuth.events.addAccessTokenExpired(function() { + // eslint-disable-next-line no-console + console.log('access token expired') +}) + +zitadelAuth.oidcAuth.events.addSilentRenewError(function(err: Error) { + // eslint-disable-next-line no-console + console.error('silent renew error', err) +}) + +zitadelAuth.oidcAuth.events.addUserLoaded(function(user: User) { + // eslint-disable-next-line no-console + console.log('user loaded', user) +}) + +zitadelAuth.oidcAuth.events.addUserUnloaded(function() { + // eslint-disable-next-line no-console + console.log('user unloaded') +}) + +zitadelAuth.oidcAuth.events.addUserSignedOut(function() { + // eslint-disable-next-line no-console + console.log('user signed out') +}) + +zitadelAuth.oidcAuth.events.addUserSessionChanged(function() { + // eslint-disable-next-line no-console + console.log('user session changed') +}) + +export default zitadelAuth diff --git a/src/stores/powerItems.ts b/src/stores/powerItems.ts index 35dd629..e77cc3c 100644 --- a/src/stores/powerItems.ts +++ b/src/stores/powerItems.ts @@ -4,6 +4,8 @@ import { defineStore } from 'pinia' import { computed, ref, toRaw } from 'vue' import axiosRetry from 'axios-retry' import { getCurrentInstance } from 'vue' +import { apiBaseURL as apiBaseURLKey } from '@/types/ConfigSymbols' +import { inject } from 'vue' const BLESSING = 1 const INTIMACY = 2 @@ -26,7 +28,9 @@ export const usePowerItems = defineStore('powerItems', () => { const fellowPowerItems = ref(new Map()) const intimacyPowerItems = ref(new Map()) const isLoadComplete = ref(false) - const apiBaseUrl = getCurrentInstance()?.appContext.config.globalProperties.$apiBaseUrl + const auth = getCurrentInstance()?.appContext.config.globalProperties.$zitadel + auth?.oidcAuth.mgr.getUser().then(res => console.log(res?.id_token)) + console.log(auth?.oidcAuth.accessToken) axiosRetry(axios, { retries: 3, @@ -34,8 +38,9 @@ export const usePowerItems = defineStore('powerItems', () => { }) async function fetchPowerItems() { + const apiBaseURL = inject(apiBaseURLKey) axios - .get(apiBaseUrl + '/powerItem/byType/' + BLESSING + '/asMap', noCacheConfig) + .get(apiBaseURL + '/powerItems/byType/' + BLESSING + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(BLESSING_POWER_ITEM_STORAGE) || '{}')) @@ -51,7 +56,7 @@ export const usePowerItems = defineStore('powerItems', () => { console.log(err) }) axios - .get(apiBaseUrl + '/powerItem/byType/' + FELLOW + '/asMap', noCacheConfig) + .get(apiBaseURL + '/powerItems/byType/' + FELLOW + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(FELLOW_POWER_ITEM_STORAGE) || '{}')) @@ -67,7 +72,7 @@ export const usePowerItems = defineStore('powerItems', () => { console.log(err) }) axios - .get(apiBaseUrl + '/powerItem/byType/' + INTIMACY + '/asMap', noCacheConfig) + .get(apiBaseURL + '/powerItems/byType/' + INTIMACY + '/asMap', noCacheConfig) .then((resp) => { const plainMap = new Map( Object.entries(JSON.parse(localStorage.getItem(INTIMACY_POWER_ITEM_STORAGE) || '{}')) diff --git a/src/types/ConfigSymbols.ts b/src/types/ConfigSymbols.ts new file mode 100644 index 0000000..aed3f97 --- /dev/null +++ b/src/types/ConfigSymbols.ts @@ -0,0 +1,7 @@ +import type { InjectionKey } from "vue"; + +const apiBaseURL = Symbol() as InjectionKey + +export { + apiBaseURL +} \ No newline at end of file diff --git a/src/views/Admin.vue b/src/views/Admin.vue new file mode 100644 index 0000000..52c2f7f --- /dev/null +++ b/src/views/Admin.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..b56f985 --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/src/views/NoAccess.vue b/src/views/NoAccess.vue new file mode 100644 index 0000000..d1c9e80 --- /dev/null +++ b/src/views/NoAccess.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file From aafd3c19de482fa69f1c6b9e6bf6b965d5f11617 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Tue, 13 Feb 2024 09:13:48 -0500 Subject: [PATCH 05/17] Type Issues Fixed and First Pass New Item Form --- Dockerfile | 4 + bun.lockb | Bin 183951 -> 185248 bytes package.json | 5 +- src/components/NewItemForm.vue | 160 +++++++++++++++++++++++++++ src/components/SpecialItemsCard.vue | 142 +++++++++++++----------- src/components/StandardItemsCard.vue | 86 ++++++++------ src/main.ts | 4 - src/router/index.ts | 2 +- src/types/DataTableHeader.ts | 110 ++++++++++++++++++ src/views/BlessingPowerView.vue | 2 +- src/views/FellowPowerView.vue | 2 +- src/views/IntimacyPowerView.vue | 2 +- src/views/Test.vue | 52 --------- src/views/TestView.vue | 13 +++ vite.config.ts | 2 + 15 files changed, 422 insertions(+), 164 deletions(-) create mode 100644 src/components/NewItemForm.vue create mode 100644 src/types/DataTableHeader.ts delete mode 100644 src/views/Test.vue create mode 100644 src/views/TestView.vue diff --git a/Dockerfile b/Dockerfile index 7b34b52..82032c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,10 @@ COPY . . # [optional] tests & build ENV NODE_ENV=production +# I can't run the type checking because of some sort of issue with +# bun and vue-tsc. +# see https://github.com/oven-sh/bun/issues/4754 +# RUN bunx --bun vue-tsc --build --force RUN bunx --bun vite build # Copy the distribution folder into the final image. diff --git a/bun.lockb b/bun.lockb index 24df2e462f64d911397a85b35b043772e3a9c37f..123dfbb7a601cc47d196f5aff51076afde4d20e6 100755 GIT binary patch delta 34005 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 diff --git a/package.json b/package.json index f5575d5..b0ddff0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "axios": "^1.6.5", "axios-retry": "^4.0.0", "pinia": "^2.1.7", - "sass": "^1.69.7", "vue": "^3.3.11", "vue-router": "^4.2.5", "vuetify": "^3.4.10" @@ -43,6 +42,8 @@ "typescript": "~5.3.0", "vite": "^5.0.10", "vitest": "^1.0.4", - "vue-tsc": "^1.8.25" + "vue-tsc": "^1.8.25", + "sass": "^1.69.7", + "vite-plugin-vuetify": "^2.0.1" } } diff --git a/src/components/NewItemForm.vue b/src/components/NewItemForm.vue new file mode 100644 index 0000000..029c7fe --- /dev/null +++ b/src/components/NewItemForm.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/components/SpecialItemsCard.vue b/src/components/SpecialItemsCard.vue index 7677514..bf094e1 100644 --- a/src/components/SpecialItemsCard.vue +++ b/src/components/SpecialItemsCard.vue @@ -1,72 +1,82 @@