diff --git a/frontend/src/components/admin/oidc/AddEditOIDC.vue b/frontend/src/components/admin/oidc/AddEditOIDC.vue
index fc64efe..758d1d3 100644
--- a/frontend/src/components/admin/oidc/AddEditOIDC.vue
+++ b/frontend/src/components/admin/oidc/AddEditOIDC.vue
@@ -2,23 +2,25 @@
\ No newline at end of file
diff --git a/frontend/src/components/admin/oidc/OIDCPage.vue b/frontend/src/components/admin/oidc/OIDCPage.vue
index 7479d4c..ffbac90 100644
--- a/frontend/src/components/admin/oidc/OIDCPage.vue
+++ b/frontend/src/components/admin/oidc/OIDCPage.vue
@@ -1,5 +1,5 @@
-
+
New OIDC
@@ -17,16 +17,23 @@ import DataTable from '@/components/admin/DataTable.vue'
import { columns } from '@/components/admin/oidc/dataTableColumns.js'
import { Button } from '@/components/ui/button'
import { useRouter } from 'vue-router'
+import { useEmitter } from '@/composables/useEmitter'
import PageHeader from '../common/PageHeader.vue'
import api from '@/api'
const oidc = ref([])
const router = useRouter()
+const emit = useEmitter()
-onMounted(async () => {
+onMounted(() => {
+ fetchAll()
+ emit.on('refresh-inbox-list', fetchAll)
+})
+
+const fetchAll = async () => {
const resp = await api.getAllOIDC()
oidc.value = resp.data.data
-})
+}
const navigateToAddOIDC = () => {
router.push("/admin/oidc/new")
diff --git a/frontend/src/components/admin/oidc/dataTableColumns.js b/frontend/src/components/admin/oidc/dataTableColumns.js
index ee2a946..85401b7 100644
--- a/frontend/src/components/admin/oidc/dataTableColumns.js
+++ b/frontend/src/components/admin/oidc/dataTableColumns.js
@@ -3,14 +3,36 @@ import dropdown from './dataTableDropdown.vue'
import { format } from 'date-fns'
export const columns = [
-
{
accessorKey: 'name',
+ header: function () {
+ return h('div', { class: 'text-center' }, 'Name')
+ },
+ cell: function ({ row }) {
+ return h('div', { class: 'text-center font-medium' }, row.getValue('name'))
+ }
+ },
+ {
+ accessorKey: 'provider',
header: function () {
return h('div', { class: 'text-center' }, 'Provider')
},
cell: function ({ row }) {
- return h('div', { class: 'text-center font-medium' }, row.getValue('name'))
+ return h('div', { class: 'text-center font-medium' }, row.getValue('provider'))
+ }
+ },
+ {
+ accessorKey: 'disabled',
+ header: () => h('div', { class: 'text-center' }, 'Enabled'),
+ cell: ({ row }) => {
+ const disabled = row.getValue('disabled')
+ return h('div', { class: 'text-center' }, [
+ h('input', {
+ type: 'checkbox',
+ checked: !disabled,
+ disabled: true
+ })
+ ])
}
},
{
diff --git a/frontend/src/components/admin/oidc/dataTableDropdown.vue b/frontend/src/components/admin/oidc/dataTableDropdown.vue
index 353c4af..38844e4 100644
--- a/frontend/src/components/admin/oidc/dataTableDropdown.vue
+++ b/frontend/src/components/admin/oidc/dataTableDropdown.vue
@@ -9,8 +9,10 @@ import {
import { Button } from '@/components/ui/button'
import { useRouter } from 'vue-router'
import api from '@/api'
+import { useEmitter } from '@/composables/useEmitter'
const router = useRouter()
+const emit = useEmitter()
const props = defineProps({
role: {
@@ -28,6 +30,7 @@ function edit (id) {
async function deleteOIDC (id) {
await api.deleteOIDC(id)
+ emit.emit('refresh-inbox-list')
}
diff --git a/frontend/src/components/admin/oidc/formSchema.js b/frontend/src/components/admin/oidc/formSchema.js
index c33bc57..dcb93ea 100644
--- a/frontend/src/components/admin/oidc/formSchema.js
+++ b/frontend/src/components/admin/oidc/formSchema.js
@@ -1,6 +1,14 @@
import * as z from 'zod'
export const oidcLoginFormSchema = z.object({
+ disabled: z
+ .boolean().optional(),
+ name: z
+ .string({
+ required_error: 'Name is required.'
+ }),
+ provider: z
+ .string().optional(),
provider_url: z
.string({
required_error: 'Provider URL is required.'
@@ -16,11 +24,5 @@ export const oidcLoginFormSchema = z.object({
.string({
required_error: 'Client Secret is required.'
}),
- redirect_uri: z
- .string({
- required_error: 'Redirect URI is required.'
- })
- .url({
- message: 'Redirect URI must be a valid URL.'
- })
+ redirect_uri: z.string().readonly().optional(),
})
diff --git a/frontend/src/components/admin/team/roles/RoleForm.vue b/frontend/src/components/admin/team/roles/RoleForm.vue
index 77ecafa..be63523 100644
--- a/frontend/src/components/admin/team/roles/RoleForm.vue
+++ b/frontend/src/components/admin/team/roles/RoleForm.vue
@@ -38,7 +38,6 @@
-
{{ submitLabel }}
@@ -118,7 +117,6 @@ const form = useForm({
const onSubmit = form.handleSubmit((values) => {
values.permissions = selectedPermissions.value
- console.log("submitting ", values)
props.submitForm(values)
})
diff --git a/frontend/src/components/admin/team/users/AddUserForm.vue b/frontend/src/components/admin/team/users/AddUserForm.vue
index 65c05c6..44ba18c 100644
--- a/frontend/src/components/admin/team/users/AddUserForm.vue
+++ b/frontend/src/components/admin/team/users/AddUserForm.vue
@@ -15,7 +15,7 @@ import api from '@/api'
const { toast } = useToast()
const breadcrumbLinks = [
{ path: '/admin/teams', label: 'Teams' },
- { path: '/admin/teams/users', label: 'Users'},
+ { path: '/admin/teams/users', label: 'Users' },
{ path: '#', label: 'Add user' }
]
diff --git a/frontend/src/components/admin/team/users/EditUserForm.vue b/frontend/src/components/admin/team/users/EditUserForm.vue
index 1cee06d..07c0888 100644
--- a/frontend/src/components/admin/team/users/EditUserForm.vue
+++ b/frontend/src/components/admin/team/users/EditUserForm.vue
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/frontend/src/components/admin/uploads/S3Form.vue b/frontend/src/components/admin/uploads/S3Form.vue
index 5060bdd..858ca86 100644
--- a/frontend/src/components/admin/uploads/S3Form.vue
+++ b/frontend/src/components/admin/uploads/S3Form.vue
@@ -114,8 +114,7 @@
S3 backend URL
-
+
Only change if using a custom S3 compatible backend like Minio.
diff --git a/frontend/src/components/admin/uploads/UploadsForm.vue b/frontend/src/components/admin/uploads/UploadsForm.vue
deleted file mode 100644
index 10991aa..0000000
--- a/frontend/src/components/admin/uploads/UploadsForm.vue
+++ /dev/null
@@ -1,249 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/conversationlist/ConversationList.vue b/frontend/src/components/conversationlist/ConversationList.vue
index 48c4869..d1e1642 100644
--- a/frontend/src/components/conversationlist/ConversationList.vue
+++ b/frontend/src/components/conversationlist/ConversationList.vue
@@ -55,7 +55,6 @@
-
diff --git a/frontend/src/components/dashboard/agent/DashboardBarChart.vue b/frontend/src/components/dashboard/agent/DashboardBarChart.vue
index c1a6b1d..693ce9a 100644
--- a/frontend/src/components/dashboard/agent/DashboardBarChart.vue
+++ b/frontend/src/components/dashboard/agent/DashboardBarChart.vue
@@ -1,7 +1,6 @@
-
+
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index d0b5203..04529f7 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -635,6 +635,21 @@
dependencies:
"@floating-ui/utils" "^0.2.0"
+"@floating-ui/core@^1.6.0":
+ version "1.6.7"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12"
+ integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==
+ dependencies:
+ "@floating-ui/utils" "^0.2.7"
+
+"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.6.7":
+ version "1.6.10"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f"
+ integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==
+ dependencies:
+ "@floating-ui/core" "^1.6.0"
+ "@floating-ui/utils" "^0.2.7"
+
"@floating-ui/dom@^1.6.1", "@floating-ui/dom@^1.6.5":
version "1.6.5"
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9"
@@ -648,6 +663,11 @@
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5"
integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==
+"@floating-ui/utils@^0.2.7":
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e"
+ integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==
+
"@floating-ui/vue@^1.0.6":
version "1.0.6"
resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.0.6.tgz#31860a12f1135d19554c232d99c5bab631c5c576"
@@ -657,6 +677,15 @@
"@floating-ui/utils" "^0.2.1"
vue-demi ">=0.13.0"
+"@floating-ui/vue@^1.1.0":
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.4.tgz#1dd6905a58baaa9a84c44c2cf28e281f715957a1"
+ integrity sha512-ammH7T3vyCx7pmm9OF19Wc42zrGnUw0QvLoidgypWsCLJMtGXEwY7paYIHO+K+oLC3mbWpzIHzeTVienYenlNg==
+ dependencies:
+ "@floating-ui/dom" "^1.0.0"
+ "@floating-ui/utils" "^0.2.7"
+ vue-demi ">=0.13.0"
+
"@formkit/auto-animate@^0.8.2":
version "0.8.2"
resolved "https://registry.yarnpkg.com/@formkit/auto-animate/-/auto-animate-0.8.2.tgz#24a56e816159fd5585405dcee6bb992f81c27585"
@@ -1241,6 +1270,11 @@
resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz#108208d0f1d75271300bc5560cf9a85a1fa01e89"
integrity sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==
+"@tanstack/virtual-core@3.8.6":
+ version "3.8.6"
+ resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.8.6.tgz#ccecf84099a9a0e9732b4f17bf021b82f215d15e"
+ integrity sha512-UJeU4SBrx3hqULNzJ3oC0kgJ5miIAg+FwomxMTlQNxob6ppTInifANHd9ukETvzdzxr6zt3CjQ0rttQpVjbt6Q==
+
"@tanstack/vue-table@^8.19.2":
version "8.19.2"
resolved "https://registry.yarnpkg.com/@tanstack/vue-table/-/vue-table-8.19.2.tgz#909f63a225788757f62a7b7fa4568da6349b9a0f"
@@ -1255,6 +1289,13 @@
dependencies:
"@tanstack/virtual-core" "3.5.0"
+"@tanstack/vue-virtual@^3.8.1":
+ version "3.8.6"
+ resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.8.6.tgz#c37a11ee8a03f04eaeaca7523eaa3963098e0728"
+ integrity sha512-nWwmlFuxChPM6bWEwKOyBBYVrQmvSKSArXhbvX2IyVTpuif9UZiBEvIXnftpCEGRvAGSe7lE1coXHk8g2qmwtQ==
+ dependencies:
+ "@tanstack/virtual-core" "3.8.6"
+
"@tiptap/core@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.4.0.tgz#6f8eee8beb5b89363582366b201ccc4798ac98a9"
@@ -1909,17 +1950,6 @@
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37"
integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==
-"@vue/compiler-core@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz#e69060f4b61429fe57976aa5872cfa21389e4d91"
- integrity sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==
- dependencies:
- "@babel/parser" "^7.24.4"
- "@vue/shared" "3.4.27"
- entities "^4.5.0"
- estree-walker "^2.0.2"
- source-map-js "^1.2.0"
-
"@vue/compiler-core@3.4.31", "@vue/compiler-core@^3.0.0":
version "3.4.31"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.31.tgz#b51a76f1b30e9b5eba0553264dff0f171aedb7c6"
@@ -1931,13 +1961,16 @@
estree-walker "^2.0.2"
source-map-js "^1.2.0"
-"@vue/compiler-dom@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz#d51d35f40d00ce235d7afc6ad8b09dfd92b1cc1c"
- integrity sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==
+"@vue/compiler-core@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.37.tgz#55db3900e09424c65c39111a05a3c6e698f371e3"
+ integrity sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==
dependencies:
- "@vue/compiler-core" "3.4.27"
- "@vue/shared" "3.4.27"
+ "@babel/parser" "^7.24.7"
+ "@vue/shared" "3.4.37"
+ entities "^5.0.0"
+ estree-walker "^2.0.2"
+ source-map-js "^1.2.0"
"@vue/compiler-dom@3.4.31", "@vue/compiler-dom@^3.4.27":
version "3.4.31"
@@ -1947,19 +1980,27 @@
"@vue/compiler-core" "3.4.31"
"@vue/shared" "3.4.31"
-"@vue/compiler-sfc@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz#399cac1b75c6737bf5440dc9cf3c385bb2959701"
- integrity sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==
+"@vue/compiler-dom@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz#a1fcf79e287cb828545082ff1afa8630480a3044"
+ integrity sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==
dependencies:
- "@babel/parser" "^7.24.4"
- "@vue/compiler-core" "3.4.27"
- "@vue/compiler-dom" "3.4.27"
- "@vue/compiler-ssr" "3.4.27"
- "@vue/shared" "3.4.27"
+ "@vue/compiler-core" "3.4.37"
+ "@vue/shared" "3.4.37"
+
+"@vue/compiler-sfc@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.37.tgz#8afaf1a86cb849422c765d4369ba1e85fffe0234"
+ integrity sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==
+ dependencies:
+ "@babel/parser" "^7.24.7"
+ "@vue/compiler-core" "3.4.37"
+ "@vue/compiler-dom" "3.4.37"
+ "@vue/compiler-ssr" "3.4.37"
+ "@vue/shared" "3.4.37"
estree-walker "^2.0.2"
magic-string "^0.30.10"
- postcss "^8.4.38"
+ postcss "^8.4.40"
source-map-js "^1.2.0"
"@vue/compiler-sfc@^3.4", "@vue/compiler-sfc@^3.4.27":
@@ -1977,14 +2018,6 @@
postcss "^8.4.38"
source-map-js "^1.2.0"
-"@vue/compiler-ssr@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz#2a8ecfef1cf448b09be633901a9c020360472e3d"
- integrity sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==
- dependencies:
- "@vue/compiler-dom" "3.4.27"
- "@vue/shared" "3.4.27"
-
"@vue/compiler-ssr@3.4.31":
version "3.4.31"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz#f62ffecdf15bacb883d0099780cf9a1e3654bfc4"
@@ -1993,6 +2026,14 @@
"@vue/compiler-dom" "3.4.31"
"@vue/shared" "3.4.31"
+"@vue/compiler-ssr@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.37.tgz#b75e1c76c3184f86fa9f0ba4d61d13bc6afcbf8a"
+ integrity sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==
+ dependencies:
+ "@vue/compiler-dom" "3.4.37"
+ "@vue/shared" "3.4.37"
+
"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
version "6.6.1"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz#7c14346383751d9f6ad4bea0963245b30220ef83"
@@ -2018,7 +2059,22 @@
dependencies:
"@vue/shared" "3.4.27"
-"@vue/runtime-core@3.4.27", "@vue/runtime-core@^3.4.15":
+"@vue/reactivity@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.37.tgz#5a199563eaab51ed9f94ddf0a82f9179bcc01676"
+ integrity sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==
+ dependencies:
+ "@vue/shared" "3.4.37"
+
+"@vue/runtime-core@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.37.tgz#3fe734a666db7842bea4185a13f7697a2102b719"
+ integrity sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==
+ dependencies:
+ "@vue/reactivity" "3.4.37"
+ "@vue/shared" "3.4.37"
+
+"@vue/runtime-core@^3.4.15":
version "3.4.27"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.27.tgz#1b6e1d71e4604ba7442dd25ed22e4a1fc6adbbda"
integrity sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==
@@ -2026,22 +2082,23 @@
"@vue/reactivity" "3.4.27"
"@vue/shared" "3.4.27"
-"@vue/runtime-dom@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz#fe8d1ce9bbe8921d5dd0ad5c10df0e04ef7a5ee7"
- integrity sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==
+"@vue/runtime-dom@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.37.tgz#219f84577027103de6ddc71351d8237c7c16adac"
+ integrity sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==
dependencies:
- "@vue/runtime-core" "3.4.27"
- "@vue/shared" "3.4.27"
+ "@vue/reactivity" "3.4.37"
+ "@vue/runtime-core" "3.4.37"
+ "@vue/shared" "3.4.37"
csstype "^3.1.3"
-"@vue/server-renderer@3.4.27":
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.27.tgz#3306176f37e648ba665f97dda3ce705687be63d2"
- integrity sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==
+"@vue/server-renderer@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.37.tgz#d341425bb5395a3f6ed70572ea5c3edefab92f28"
+ integrity sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==
dependencies:
- "@vue/compiler-ssr" "3.4.27"
- "@vue/shared" "3.4.27"
+ "@vue/compiler-ssr" "3.4.37"
+ "@vue/shared" "3.4.37"
"@vue/shared@3.4.27":
version "3.4.27"
@@ -2053,6 +2110,11 @@
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.31.tgz#af9981f57def2c3f080c14bf219314fc0dc808a0"
integrity sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==
+"@vue/shared@3.4.37":
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.37.tgz#4f4c08a2e73da512a77b47165cf59ffbc1b5ade8"
+ integrity sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==
+
"@vuedx/template-ast-types@0.7.1":
version "0.7.1"
resolved "https://registry.yarnpkg.com/@vuedx/template-ast-types/-/template-ast-types-0.7.1.tgz#ccc75786a4fe1d1910f6c8d93d150d44ee1dabdc"
@@ -2060,7 +2122,7 @@
dependencies:
"@vue/compiler-core" "^3.0.0"
-"@vueuse/core@^10.11.1":
+"@vueuse/core@^10.11.0", "@vueuse/core@^10.11.1":
version "10.11.1"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.11.1.tgz#15d2c0b6448d2212235b23a7ba29c27173e0c2c6"
integrity sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==
@@ -2090,7 +2152,7 @@
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620"
integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==
-"@vueuse/shared@10.11.1":
+"@vueuse/shared@10.11.1", "@vueuse/shared@^10.11.0":
version "10.11.1"
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.11.1.tgz#62b84e3118ae6e1f3ff38f4fbe71b0c5d0f10938"
integrity sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==
@@ -2325,7 +2387,7 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-aria-hidden@^1.2.3:
+aria-hidden@^1.2.3, aria-hidden@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522"
integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==
@@ -3828,6 +3890,11 @@ entities@^4.4.0, entities@^4.5.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+entities@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-5.0.0.tgz#b2ab51fe40d995817979ec79dd621154c3c0f62b"
+ integrity sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==
+
env-paths@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
@@ -6178,7 +6245,7 @@ nanoid@^3.3.7:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-nanoid@^5.0.6:
+nanoid@^5.0.6, nanoid@^5.0.7:
version "5.0.7"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.7.tgz#6452e8c5a816861fd9d2b898399f7e5fd6944cc6"
integrity sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==
@@ -7184,6 +7251,15 @@ postcss@^8.4.23, postcss@^8.4.38:
picocolors "^1.0.0"
source-map-js "^1.2.0"
+postcss@^8.4.40:
+ version "8.4.41"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
+ integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.1"
+ source-map-js "^1.2.0"
+
potpack@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14"
@@ -7615,22 +7691,22 @@ radix-vue@^1.7.3:
fast-deep-equal "^3.1.3"
nanoid "^5.0.6"
-radix-vue@^1.8.0:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/radix-vue/-/radix-vue-1.8.1.tgz#5e0cb08a1540b7d3ad5c21e39f5ebe5bd735f826"
- integrity sha512-DFyUt2vc/89tpSHiJvv7Qb/Qs8zVxq2g7q4kuuDV46fmDmSC3mnV3hdSAYruU7k/KvoDpS3sd99kLGRtuG63Rw==
+radix-vue@latest:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/radix-vue/-/radix-vue-1.9.3.tgz#4fa171a570a366730114bbd065531b2ce6037359"
+ integrity sha512-9pewcgzghM+B+FO1h9mMsZa/csVH6hElpN1sqmG4/qoeieiDG0i4nhMjS7p2UOz11EEdVm7eLandHSPyx7hYhg==
dependencies:
- "@floating-ui/dom" "^1.6.5"
- "@floating-ui/vue" "^1.0.6"
+ "@floating-ui/dom" "^1.6.7"
+ "@floating-ui/vue" "^1.1.0"
"@internationalized/date" "^3.5.4"
"@internationalized/number" "^3.5.3"
- "@tanstack/vue-virtual" "^3.5.0"
- "@vueuse/core" "^10.5.0"
- "@vueuse/shared" "^10.5.0"
- aria-hidden "^1.2.3"
+ "@tanstack/vue-virtual" "^3.8.1"
+ "@vueuse/core" "^10.11.0"
+ "@vueuse/shared" "^10.11.0"
+ aria-hidden "^1.2.4"
defu "^6.1.4"
fast-deep-equal "^3.1.3"
- nanoid "^5.0.6"
+ nanoid "^5.0.7"
rc9@^2.1.2:
version "2.1.2"
@@ -9226,16 +9302,16 @@ vue-router@^4.2.5:
dependencies:
"@vue/devtools-api" "^6.5.1"
-vue@^3.4.15:
- version "3.4.27"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.27.tgz#40b7d929d3e53f427f7f5945386234d2854cc2a1"
- integrity sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==
+vue@^3.4.37:
+ version "3.4.37"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.37.tgz#64ce0eeb8de16a29fb74e504777ee8c0c1cf229e"
+ integrity sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==
dependencies:
- "@vue/compiler-dom" "3.4.27"
- "@vue/compiler-sfc" "3.4.27"
- "@vue/runtime-dom" "3.4.27"
- "@vue/server-renderer" "3.4.27"
- "@vue/shared" "3.4.27"
+ "@vue/compiler-dom" "3.4.37"
+ "@vue/compiler-sfc" "3.4.37"
+ "@vue/runtime-dom" "3.4.37"
+ "@vue/server-renderer" "3.4.37"
+ "@vue/shared" "3.4.37"
w3c-keyname@^2.2.0:
version "2.2.8"
diff --git a/internal/auth/auth.go b/internal/auth/auth.go
index 3d0a697..2889013 100644
--- a/internal/auth/auth.go
+++ b/internal/auth/auth.go
@@ -7,6 +7,7 @@ import (
"net/http"
"time"
+ "github.com/abhinavxd/artemis/internal/envelope"
"github.com/abhinavxd/artemis/internal/user/models"
"github.com/coreos/go-oidc/v3/oidc"
"github.com/redis/go-redis/v9"
@@ -26,42 +27,51 @@ type OIDCclaim struct {
Picture string `json:"picture"`
}
-type OIDCConfig struct {
- Enabled bool `json:"enabled"`
- ProviderURL string `json:"provider_url"`
- RedirectURL string `json:"redirect_url"`
- ClientID string `json:"client_id"`
- ClientSecret string `json:"client_secret"`
+type Provider struct {
+ ID int
+ Provider string
+ ProviderURL string
+ RedirectURL string
+ ClientID string
+ ClientSecret string
}
type Config struct {
- OIDC OIDCConfig
+ Providers []Provider
}
type Auth struct {
- cfg Config
- oauthCfg oauth2.Config
- verifier *oidc.IDTokenVerifier
- sess *simplesessions.Manager
- lo *logf.Logger
+ cfg Config
+ oauthCfgs map[int]oauth2.Config
+ verifiers map[int]*oidc.IDTokenVerifier
+ sess *simplesessions.Manager
+ logger *logf.Logger
}
-// New inits a OIDC configuration
+// New initializes an OIDC configuration for multiple providers.
func New(cfg Config, rd *redis.Client, logger *logf.Logger) (*Auth, error) {
- provider, err := oidc.NewProvider(context.Background(), cfg.OIDC.ProviderURL)
- if err != nil {
- return nil, err
- }
+ oauthCfgs := make(map[int]oauth2.Config)
+ verifiers := make(map[int]*oidc.IDTokenVerifier)
- oauthCfg := oauth2.Config{
- ClientID: cfg.OIDC.ClientID,
- ClientSecret: cfg.OIDC.ClientSecret,
- Endpoint: provider.Endpoint(),
- RedirectURL: cfg.OIDC.RedirectURL,
- Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
- }
+ for _, provider := range cfg.Providers {
+ oidcProv, err := oidc.NewProvider(context.Background(), provider.ProviderURL)
+ if err != nil {
+ return nil, fmt.Errorf("initializing `%s` oidc login: %v", provider.Provider, err)
+ }
- verifier := provider.Verifier(&oidc.Config{ClientID: cfg.OIDC.ClientID})
+ oauthCfg := oauth2.Config{
+ ClientID: provider.ClientID,
+ ClientSecret: provider.ClientSecret,
+ Endpoint: oidcProv.Endpoint(),
+ RedirectURL: provider.RedirectURL,
+ Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
+ }
+
+ verifier := oidcProv.Verifier(&oidc.Config{ClientID: provider.ClientID})
+
+ oauthCfgs[provider.ID] = oauthCfg
+ verifiers[provider.ID] = verifier
+ }
sess := simplesessions.New(simplesessions.Options{
EnableAutoCreate: false,
@@ -72,27 +82,42 @@ func New(cfg Config, rd *redis.Client, logger *logf.Logger) (*Auth, error) {
MaxAge: time.Hour * 12,
},
})
+
st := sessredisstore.New(context.TODO(), rd)
sess.UseStore(st)
sess.SetCookieHooks(simpleSessGetCookieCB, simpleSessSetCookieCB)
return &Auth{
- cfg: cfg,
- oauthCfg: oauthCfg,
- verifier: verifier,
- lo: logger,
- sess: sess,
+ cfg: cfg,
+ oauthCfgs: oauthCfgs,
+ verifiers: verifiers,
+ sess: sess,
+ logger: logger,
}, nil
}
-// LoginURL
-func (a *Auth) LoginURL(state string) string {
- return a.oauthCfg.AuthCodeURL(state)
+// LoginURL generates a login URL for a specific provider using its ID.
+func (a *Auth) LoginURL(providerID int, state string) (string, error) {
+ oauthCfg, ok := a.oauthCfgs[providerID]
+ if !ok {
+ return "", envelope.NewError(envelope.InputError, "Provider not found", nil)
+ }
+ return oauthCfg.AuthCodeURL(state), nil
}
// ExchangeOIDCToken takes an OIDC authorization code, validates it, and returns an OIDC token for subsequent auth.
-func (a *Auth) ExchangeOIDCToken(ctx context.Context, code string) (string, OIDCclaim, error) {
- tk, err := a.oauthCfg.Exchange(ctx, code)
+func (a *Auth) ExchangeOIDCToken(ctx context.Context, providerID int, code string) (string, OIDCclaim, error) {
+ oauthCfg, ok := a.oauthCfgs[providerID]
+ if !ok {
+ return "", OIDCclaim{}, fmt.Errorf("invalid provider ID: %d", providerID)
+ }
+
+ verifier, ok := a.verifiers[providerID]
+ if !ok {
+ return "", OIDCclaim{}, fmt.Errorf("invalid provider ID: %d", providerID)
+ }
+
+ tk, err := oauthCfg.Exchange(ctx, code)
if err != nil {
return "", OIDCclaim{}, fmt.Errorf("error exchanging token: %v", err)
}
@@ -104,7 +129,7 @@ func (a *Auth) ExchangeOIDCToken(ctx context.Context, code string) (string, OIDC
}
// Parse and verify ID Token payload.
- idTk, err := a.verifier.Verify(ctx, rawIDTk)
+ idTk, err := verifier.Verify(ctx, rawIDTk)
if err != nil {
return "", OIDCclaim{}, fmt.Errorf("error verifying ID token: %v", err)
}
@@ -117,10 +142,10 @@ func (a *Auth) ExchangeOIDCToken(ctx context.Context, code string) (string, OIDC
}
// SaveSession creates and sets a session (post successful login/auth).
-func (o *Auth) SaveSession(user models.User, r *fastglue.Request) error {
- sess, err := o.sess.NewSession(r, r)
+func (a *Auth) SaveSession(user models.User, r *fastglue.Request) error {
+ sess, err := a.sess.NewSession(r, r)
if err != nil {
- o.lo.Error("error creating login session", "error", err)
+ a.logger.Error("error creating login session", "error", err)
return err
}
@@ -130,15 +155,15 @@ func (o *Auth) SaveSession(user models.User, r *fastglue.Request) error {
"first_name": user.FirstName,
"last_name": user.LastName,
}); err != nil {
- o.lo.Error("error setting login session", "error", err)
+ a.logger.Error("error setting login session", "error", err)
return err
}
return nil
}
// ValidateSession validates session and returns the user.
-func (o *Auth) ValidateSession(r *fastglue.Request) (models.User, error) {
- sess, err := o.sess.Acquire(r.RequestCtx, r, r)
+func (a *Auth) ValidateSession(r *fastglue.Request) (models.User, error) {
+ sess, err := a.sess.Acquire(r.RequestCtx, r, r)
if err != nil {
return models.User{}, err
}
@@ -158,7 +183,7 @@ func (o *Auth) ValidateSession(r *fastglue.Request) (models.User, error) {
// Logged in?
if userID <= 0 {
- o.lo.Error("error fetching session", "error", err)
+ a.logger.Error("error fetching session", "error", err)
return models.User{}, err
}
@@ -171,14 +196,14 @@ func (o *Auth) ValidateSession(r *fastglue.Request) (models.User, error) {
}
// DestroySession destroys session
-func (o *Auth) DestroySession(r *fastglue.Request) error {
- sess, err := o.sess.Acquire(r.RequestCtx, r, r)
+func (a *Auth) DestroySession(r *fastglue.Request) error {
+ sess, err := a.sess.Acquire(r.RequestCtx, r, r)
if err != nil {
- o.lo.Error("error acquiring session", "error", err)
+ a.logger.Error("error acquiring session", "error", err)
return err
}
if err := sess.Destroy(); err != nil {
- o.lo.Error("error clearing session", "error", err)
+ a.logger.Error("error clearing session", "error", err)
return err
}
return nil
diff --git a/internal/media/stores/localfs/fs.go b/internal/media/stores/localfs/fs.go
index 44aae1a..5e5215b 100644
--- a/internal/media/stores/localfs/fs.go
+++ b/internal/media/stores/localfs/fs.go
@@ -34,6 +34,8 @@ func (c *Client) Put(filename string, cType string, src io.ReadSeeker) (string,
// Get the directory path
dir := getDir(c.opts.UploadPath)
+ fmt.Println("dir ", dir)
+ fmt.Println("-- ", c.opts.UploadPath)
o, err := os.OpenFile(filepath.Join(dir, filename), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0664)
if err != nil {
return "", err
diff --git a/internal/oidc/models/models.go b/internal/oidc/models/models.go
index ffc680d..a91898d 100644
--- a/internal/oidc/models/models.go
+++ b/internal/oidc/models/models.go
@@ -1,7 +1,6 @@
package models
import (
- "strings"
"time"
)
@@ -10,35 +9,28 @@ type OIDC struct {
ID int `db:"id" json:"id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
- Name string `db:"-" json:"name"`
- ProviderLogoURL string `db:"-" json:"logo_url"`
- ProviderURL string `db:"provider_url" json:"provider_url"`
+ Name string `db:"name" json:"name"`
+ Disabled bool `db:"disabled" json:"disabled"`
ClientID string `db:"client_id" json:"client_id"`
ClientSecret string `db:"client_secret" json:"client_secret"`
- RedirectURI string `db:"redirect_uri" json:"redirect_uri"`
+ Provider string `db:"provider" json:"provider"`
+ ProviderURL string `db:"provider_url" json:"provider_url"`
+ RedirectURI string `db:"-" json:"redirect_uri"`
+ ProviderLogoURL string `db:"-" json:"logo_url"`
}
-// ProviderInfo holds the name and logo of a provider.
-type ProviderInfo struct {
- Name string
- Logo string
+// providerLogos holds known provider logos.
+var providerLogos = map[string]string{
+ "Google": "/images/google-logo.png",
+ "Github": "/images/github-logo.png",
+ "Custom": "",
}
-var providerMap = map[string]ProviderInfo{
- "accounts.google.com": {Name: "Google", Logo: "https://lh3.googleusercontent.com/COxitqgJr1sJnIDe8-jiKhxDx1FrYbtRHKJ9z_hELisAlapwE9LUPh6fcXIfb5vwpbMl4xl9H9TRFPc5NOO8Sb3VSgIBrfRYvW6cUA"},
- "microsoftonline.com": {Name: "Microsoft", Logo: "https://logo"},
- "github.com": {Name: "Github", Logo: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTrg0GanJf8uJHY8yuvL6Vyk47iVTx-AchsAA&s"},
-}
-
-// SetProviderInfo adds provider name and logo to an OIDC model.
-func (oidc *OIDC) SetProviderInfo() {
- for url, info := range providerMap {
- if strings.Contains(oidc.ProviderURL, url) {
- oidc.Name = info.Name
- oidc.ProviderLogoURL = info.Logo
- return
+// SetProviderLogo provider logo to the OIDC model.
+func (oidc *OIDC) SetProviderLogo() {
+ for provider, logo := range providerLogos {
+ if oidc.Provider == provider {
+ oidc.ProviderLogoURL = logo
}
}
- oidc.Name = "Custom"
- oidc.ProviderLogoURL = "https://path_to_default_logo"
}
diff --git a/internal/oidc/oidc.go b/internal/oidc/oidc.go
index 0b777c2..126d99a 100644
--- a/internal/oidc/oidc.go
+++ b/internal/oidc/oidc.go
@@ -35,6 +35,7 @@ type queries struct {
UpdateOIDC *sqlx.Stmt `query:"update-oidc"`
DeleteOIDC *sqlx.Stmt `query:"delete-oidc"`
}
+
// New creates and returns a new instance of the oidc Manager.
func New(opts Opts) (*Manager, error) {
var q queries
@@ -56,7 +57,7 @@ func (o *Manager) Get(id int) (models.OIDC, error) {
o.lo.Error("error fetching oidc", "error", err)
return oidc, envelope.NewError(envelope.GeneralError, "Error fetching OIDC", nil)
}
- oidc.SetProviderInfo()
+ oidc.SetProviderLogo()
return oidc, nil
}
@@ -68,23 +69,23 @@ func (o *Manager) GetAll() ([]models.OIDC, error) {
return oidc, envelope.NewError(envelope.GeneralError, "Error fetching OIDC", nil)
}
for i := range oidc {
- oidc[i].SetProviderInfo()
+ oidc[i].SetProviderLogo()
}
return oidc, nil
}
// Create adds a new oidc.
func (o *Manager) Create(oidc models.OIDC) error {
- if _, err := o.q.InsertOIDC.Exec(oidc.ProviderURL, oidc.ClientID, oidc.ClientSecret, oidc.RedirectURI); err != nil {
+ if _, err := o.q.InsertOIDC.Exec(oidc.Name, oidc.Provider, oidc.ProviderURL, oidc.ClientID, oidc.ClientSecret); err != nil {
o.lo.Error("error inserting oidc", "error", err)
- return envelope.NewError(envelope.GeneralError, "Error fetching OIDC", nil)
+ return envelope.NewError(envelope.GeneralError, "Error creating OIDC", nil)
}
return nil
}
// Create updates a oidc by id.
func (o *Manager) Update(id int, oidc models.OIDC) error {
- if _, err := o.q.UpdateOIDC.Exec(id, oidc.ProviderURL, oidc.ClientID, oidc.ClientSecret, oidc.RedirectURI); err != nil {
+ if _, err := o.q.UpdateOIDC.Exec(id, oidc.Name, oidc.Provider, oidc.ProviderURL, oidc.ClientID, oidc.ClientSecret, oidc.Disabled); err != nil {
o.lo.Error("error updating oidc", "error", err)
return envelope.NewError(envelope.GeneralError, "Error updating OIDC", nil)
}
diff --git a/internal/oidc/queries.sql b/internal/oidc/queries.sql
index 09b8ec0..d1f0cea 100644
--- a/internal/oidc/queries.sql
+++ b/internal/oidc/queries.sql
@@ -1,19 +1,17 @@
-- name: get-all-oidc
-SELECT id, disabled, provider_url, updated_at FROM oidc;
+SELECT id, name, disabled, provider_url, provider, client_id, client_secret, updated_at FROM oidc order by updated_at desc;
-- name: get-oidc
SELECT * FROM oidc WHERE id = $1;
-- name: insert-oidc
-INSERT INTO oidc (provider_url, client_id, client_secret, redirect_uri)
-VALUES ($1, $2, $3, $4)
-RETURNING *;
+INSERT INTO oidc (name, provider, provider_url, client_id, client_secret)
+VALUES ($1, $2, $3, $4, $5);
-- name: update-oidc
UPDATE oidc
-SET provider_url = $2, client_id = $3, client_secret = $4, redirect_uri = $5, updated_at = now()
-WHERE id = $1
-RETURNING *;
+SET name = $2, provider = $3, provider_url = $4, client_id = $5, client_secret = $6, disabled = $7, updated_at = now()
+WHERE id = $1;
-- name: delete-oidc
DELETE FROM oidc WHERE id = $1;