Skip to content

Commit 0f6a74b

Browse files
authored
fix: pats page code invalidating in same session (#6924)
1 parent d5b763c commit 0f6a74b

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

  • apps/frontend/src/pages/settings

apps/frontend/src/pages/settings/pats.vue

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,13 @@
6262
<label for="pat-expires">
6363
<span class="font-semibold">{{ formatMessage(createModalMessages.expiresLabel) }}</span>
6464
</label>
65-
<DatePicker id="pat-expires" v-model="expires" show-today wrapper-class="w-full" />
65+
<DatePicker
66+
id="pat-expires"
67+
v-model="expires"
68+
:min-date="minimumPatExpiry"
69+
show-today
70+
wrapper-class="w-full"
71+
/>
6672
</div>
6773

6874
<div class="ml-auto mt-4 flex gap-2">
@@ -73,13 +79,13 @@
7379
</button>
7480
</ButtonStyled>
7581
<ButtonStyled v-if="editPatId !== null" color="brand">
76-
<button :disabled="loading || !name || !expires" @click="editPat">
82+
<button :disabled="loading || !name || !isExpiryInFuture" @click="editPat">
7783
<SaveIcon />
7884
{{ formatMessage(commonMessages.saveChangesButton) }}
7985
</button>
8086
</ButtonStyled>
8187
<ButtonStyled v-else color="brand">
82-
<button :disabled="loading || !name || !expires" @click="createPat">
88+
<button :disabled="loading || !name || !isExpiryInFuture" @click="createPat">
8389
<PlusIcon />
8490
{{ formatMessage(createModalMessages.action) }}
8591
</button>
@@ -123,8 +129,8 @@
123129
<strong>{{ pat.name }}</strong>
124130
</div>
125131
<div>
126-
<template v-if="pat.access_token">
127-
<CopyCode :text="pat.access_token" />
132+
<template v-if="createdPatTokens[pat.id] || pat.access_token">
133+
<CopyCode :text="createdPatTokens[pat.id] || pat.access_token" />
128134
</template>
129135
<template v-else>
130136
<span v-tooltip="pat.last_used ? formatDateTime(pat.last_used) : null">
@@ -331,12 +337,17 @@ useHead({
331337
const data = useNuxtApp()
332338
const { scopesToLabels } = useScopes()
333339
const patModal = ref()
340+
const minimumPatExpiry = data.$dayjs().add(1, 'day').format('YYYY-MM-DD')
334341
335342
const editPatId = ref(null)
336343
337344
const name = ref(null)
338345
const scopesVal = ref(BigInt(0))
339346
const expires = ref(null)
347+
const createdPatTokens = ref({})
348+
const isExpiryInFuture = computed(
349+
() => expires.value && data.$dayjs(expires.value).isAfter(data.$dayjs(), 'day'),
350+
)
340351
341352
const deletePatIndex = ref(null)
342353
@@ -415,6 +426,9 @@ async function createPat() {
415426
scopes: Number(scopesVal.value),
416427
expires: data.$dayjs(expires.value).toISOString(),
417428
})
429+
if (res.access_token) {
430+
createdPatTokens.value[res.id] = res.access_token
431+
}
418432
queryClient.setQueryData(['pat'], (old) => [...(old || []), res])
419433
patModal.value.hide()
420434
} catch (err) {

0 commit comments

Comments
 (0)