mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-04 15:10:06 +00:00
[API Node] Allow authentification via Comfy API key (#3815)
Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
69
src/stores/apiKeyAuthStore.ts
Normal file
69
src/stores/apiKeyAuthStore.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import { useLocalStorage } from '@vueuse/core'
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed } from 'vue'
|
||||
|
||||
import { useErrorHandling } from '@/composables/useErrorHandling'
|
||||
import { t } from '@/i18n'
|
||||
import { useToastStore } from '@/stores/toastStore'
|
||||
|
||||
const STORAGE_KEY = 'comfy_api_key'
|
||||
|
||||
export const useApiKeyAuthStore = defineStore('apiKeyAuth', () => {
|
||||
const apiKey = useLocalStorage<string | null>(STORAGE_KEY, null)
|
||||
const toastStore = useToastStore()
|
||||
const { wrapWithErrorHandlingAsync, toastErrorHandler } = useErrorHandling()
|
||||
|
||||
const reportError = (error: unknown) => {
|
||||
if (error instanceof Error && error.message === 'STORAGE_FAILED') {
|
||||
toastStore.add({
|
||||
severity: 'error',
|
||||
summary: t('auth.apiKey.storageFailed'),
|
||||
detail: t('auth.apiKey.storageFailedDetail')
|
||||
})
|
||||
} else {
|
||||
toastErrorHandler(error)
|
||||
}
|
||||
}
|
||||
|
||||
const storeApiKey = wrapWithErrorHandlingAsync(async (newApiKey: string) => {
|
||||
apiKey.value = newApiKey
|
||||
toastStore.add({
|
||||
severity: 'success',
|
||||
summary: t('auth.apiKey.stored'),
|
||||
detail: t('auth.apiKey.storedDetail'),
|
||||
life: 5000
|
||||
})
|
||||
return true
|
||||
}, reportError)
|
||||
|
||||
const clearStoredApiKey = wrapWithErrorHandlingAsync(async () => {
|
||||
apiKey.value = null
|
||||
toastStore.add({
|
||||
severity: 'success',
|
||||
summary: t('auth.apiKey.cleared'),
|
||||
detail: t('auth.apiKey.clearedDetail'),
|
||||
life: 5000
|
||||
})
|
||||
return true
|
||||
}, reportError)
|
||||
|
||||
const getApiKey = () => apiKey.value
|
||||
|
||||
const getAuthHeader = () => {
|
||||
const comfyOrgApiKey = getApiKey()
|
||||
if (comfyOrgApiKey) {
|
||||
return {
|
||||
'X-API-KEY': comfyOrgApiKey
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
return {
|
||||
hasApiKey: computed(() => !!apiKey.value),
|
||||
storeApiKey,
|
||||
clearStoredApiKey,
|
||||
getAuthHeader,
|
||||
getApiKey
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user