Files
windmill/frontend/src/lib/components/PasswordArgInput.svelte

60 lines
1.4 KiB
Svelte

<script lang="ts">
import { VariableService } from '$lib/gen'
import { userStore, workspaceStore } from '$lib/stores'
import { generateRandomString } from '$lib/utils'
import Password from './Password.svelte'
export let value: string | undefined = undefined
export let disabled: boolean
let path = ''
let password = value && !value.startsWith('$var:') ? value : ''
async function generateValue() {
let npath =
'u/' +
($userStore?.username ?? $userStore?.email)?.split('@')[0] +
'/secret_arg/' +
generateRandomString(12)
let nvalue = '$var:' + npath
await VariableService.createVariable({
workspace: $workspaceStore!,
requestBody: {
value: password,
is_secret: true,
path: npath,
description: '',
expires_at: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7).toISOString()
}
})
path = npath
value = nvalue
}
async function updateValue() {
await VariableService.updateVariable({
workspace: $workspaceStore!,
path: path,
requestBody: {
value: password
}
})
}
let timeout: NodeJS.Timeout | undefined = undefined
function debouncedUpdate() {
timeout && clearTimeout(timeout)
setTimeout(updateValue, 500)
}
$: password && debouncedUpdate()
$: $workspaceStore &&
($userStore?.username || $userStore?.email) &&
path == '' &&
password != '' &&
generateValue()
</script>
<Password {disabled} bind:password />