diff --git a/backend/gagag.dbaa b/backend/gagag.dbaa new file mode 100644 index 0000000..6e6a8f0 Binary files /dev/null and b/backend/gagag.dbaa differ diff --git a/backend/go.mod b/backend/go.mod index 6216540..47d75cb 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -3,7 +3,7 @@ module backend go 1.25.4 require ( - gitea.tecamino.com/paadi/access-handler v1.0.48 + gitea.tecamino.com/paadi/access-handler v1.0.51 gitea.tecamino.com/paadi/memberDB v1.1.30 gitea.tecamino.com/paadi/tecamino-dbm v1.0.0 gitea.tecamino.com/paadi/tecamino-logger v0.2.1 diff --git a/backend/go.sum b/backend/go.sum index 24e4bba..34d5f2a 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -1,5 +1,5 @@ -gitea.tecamino.com/paadi/access-handler v1.0.48 h1:PYZvOwR9HCORAFpm7Nd5ZXvWwT5w04OvbcHhVHmPJlw= -gitea.tecamino.com/paadi/access-handler v1.0.48/go.mod h1:0kUGU4Jw2jSvopCCwecuX/2QnVKS09Ec1KQNrBXvsFs= +gitea.tecamino.com/paadi/access-handler v1.0.51 h1:kTPwN+0Zw/Uyfo6el1jl5ORzIrjQdC8PUlczoN9mBS4= +gitea.tecamino.com/paadi/access-handler v1.0.51/go.mod h1:0kUGU4Jw2jSvopCCwecuX/2QnVKS09Ec1KQNrBXvsFs= gitea.tecamino.com/paadi/dbHandler v1.1.12 h1:F1ARSTUm0MZmF84FfD/g5RQNMYyDYXHYrB3cXPSi4qw= gitea.tecamino.com/paadi/dbHandler v1.1.12/go.mod h1:y/xn/POJg1DO++67uKvnO23lJQgh+XFQq7HZCS9Getw= gitea.tecamino.com/paadi/memberDB v1.1.30 h1:N+3V9A/+OAGIoJeUNVHj1qUuBcy6ADLYFIgCnp2Ggk4= diff --git a/src/pages/SettingsPage.vue b/src/pages/SettingsPage.vue index 48a7825..3c6559b 100644 --- a/src/pages/SettingsPage.vue +++ b/src/pages/SettingsPage.vue @@ -38,7 +38,7 @@ :label="$t('workspaces')" :options="localUser?.workspaces" option-label="name" - v-model="settings.workspace" + v-model="localWorkspace" @update:model-value="changeWorkspace" > diff --git a/src/vueLib/login/userStore.ts b/src/vueLib/login/userStore.ts index 8f66de3..9104aa8 100644 --- a/src/vueLib/login/userStore.ts +++ b/src/vueLib/login/userStore.ts @@ -50,6 +50,9 @@ export const useUserStore = defineStore('user', { } }; }, + getWorkspaceUuid: (state: UserState) => { + return state.user?.workspaces?.find((w) => w.id === state.user?.workspaceId)?.uuid; + }, }, actions: { setFirstLogin(b: boolean) { diff --git a/src/vueLib/models/settings.ts b/src/vueLib/models/settings.ts index 233d4f0..a961642 100644 --- a/src/vueLib/models/settings.ts +++ b/src/vueLib/models/settings.ts @@ -1,16 +1,12 @@ import { ref } from 'vue'; -import type { Workspace } from './workspaces'; export const logo = ref(''); export const appName = ref('Attendance Records'); -export const databaseName = ref('members.dba'); -export const workspace = ref(''); export type Settings = { appName: string; icon: string; - databaseName: string; - workspace: Workspace | null; + databaseName?: string; primaryColor: string; primaryColorText: string; secondaryColor: string; @@ -21,8 +17,6 @@ export function DefaultSettings(): Settings { return { appName: 'Attendance Records', icon: '', - databaseName: 'members.dba', - workspace: { name: '', description: '', uuid: workspace.value }, primaryColor: document.documentElement.style.getPropertyValue('--q-primary-text'), primaryColorText: document.documentElement.style.getPropertyValue('--q-primary'), secondaryColor: document.documentElement.style.getPropertyValue('--q-secondary'), diff --git a/src/vueLib/models/user.ts b/src/vueLib/models/user.ts index 6c714da..b08d833 100644 --- a/src/vueLib/models/user.ts +++ b/src/vueLib/models/user.ts @@ -1,6 +1,7 @@ import type { Permissions } from '../checkboxes/permissions'; import type { Role } from './roles'; import type { Settings } from './settings'; +import type { Workspaces } from './workspaces'; export interface User { id: number; @@ -9,7 +10,8 @@ export interface User { permissions?: Permissions; settings?: Settings; newDatabase?: boolean; - workspaces?: string[]; + workspaceId?: number | undefined; + workspaces?: Workspaces; } export interface UserState { diff --git a/src/vueLib/models/users.ts b/src/vueLib/models/users.ts index 56fe269..01302a3 100644 --- a/src/vueLib/models/users.ts +++ b/src/vueLib/models/users.ts @@ -12,6 +12,7 @@ export interface User { password?: string; newPassword?: string; settings?: Settings; + workspaceId?: number; workspaces?: Workspace[]; } diff --git a/src/vueLib/tables/workspaces/WorkspaceTable.vue b/src/vueLib/tables/workspaces/WorkspaceTable.vue index 4abbb71..7f96e7f 100644 --- a/src/vueLib/tables/workspaces/WorkspaceTable.vue +++ b/src/vueLib/tables/workspaces/WorkspaceTable.vue @@ -129,8 +129,7 @@ import { i18n } from 'src/boot/lang'; import { QTable } from 'quasar'; import { useUserStore } from 'src/vueLib/login/userStore'; import SearchableInput from '../components/SearchableInput.vue'; -import type { User } from 'src/vueLib/models/user'; -import { workspace } from 'src/vueLib/models/settings'; +import { type User } from 'src/vueLib/models/user'; const { NotifyResponse } = useNotify(); const editOneDialog = ref(); @@ -179,8 +178,11 @@ function openRemoveDialog(...workspaces: Workspaces) { function removeWorkspace(...removeWorkspaces: Workspaces) { const workspaces: Workspace[] = []; + const user = useUserStore().user; + const usedWorkspaceId = user?.workspaces?.find((w) => w.uuid === user.workspaceId)?.id; + removeWorkspaces.forEach((workspace: Workspace) => { - if (workspace.id === currentUser.value?.settings?.workspace) { + if (workspace.id === usedWorkspaceId) { NotifyResponse(i18n.global.t('notPossibleToDeleteUsedWorkspace'), 'error'); } else if (workspace.id) { workspaces.push(workspace); @@ -192,11 +194,6 @@ function removeWorkspace(...removeWorkspaces: Workspaces) { workspaces: workspaces, }) .then(() => { - const storageWorkspace = localStorage.getItem('workspace'); - if (workspaces.some((w) => w.uuid === storageWorkspace)) { - workspace.value = ''; - localStorage.removeItem('workspace'); - } updateWorkspaces().catch((err) => NotifyResponse(err, 'error')); if (workspaces.length === 1) { NotifyResponse("'" + workspaces[0]?.name + "' " + i18n.global.t('deleted'), 'warning');