Skip to content

Commit ccbe96d

Browse files
authored
Merge pull request #1144 from nextcloud/enh/1142/confirm-deletion
Add provider deletion confirmation
2 parents 8f511f1 + e9d602f commit ccbe96d

1 file changed

Lines changed: 47 additions & 8 deletions

File tree

src/components/AdminSettings.vue

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
<NcModal v-if="showNewProvider"
5050
size="large"
5151
:name="t('user_oidc', 'Register a new provider')"
52-
:can-close="false">
52+
:no-close="true">
5353
<div class="providermodal__wrapper">
5454
<h3>{{ t('user_oidc', 'Register a new provider') }}</h3>
5555
<p class="settings-hint">
@@ -87,9 +87,9 @@
8787
</NcActionButton>
8888
</NcActions>
8989
<NcActions :style="customActionsStyle">
90-
<NcActionButton @click="onRemove(provider)">
90+
<NcActionButton @click="onProviderDeleteClick(provider)">
9191
<template #icon>
92-
<DeleteOutlineIcon :size="20" />
92+
<TrashCanOutlineIcon :size="20" />
9393
</template>
9494
{{ t('user_oidc', 'Remove') }}
9595
</NcActionButton>
@@ -100,25 +100,43 @@
100100
<NcModal v-if="editProvider"
101101
size="large"
102102
:name="t('user_oidc', 'Update provider settings')"
103-
:can-close="false">
103+
:no-close="true">
104104
<div class="providermodal__wrapper">
105105
<h3>{{ t('user_oidc', 'Update provider settings') }}</h3>
106106
<SettingsForm :provider="editProvider"
107107
:update="true"
108108
:submit-text="t('user_oidc', 'Update provider')"
109109
@submit="onUpdate"
110-
@cancel-form="editProvider=null" />
110+
@cancel-form="editProvider = null" />
111111
</div>
112112
</NcModal>
113+
<NcDialog v-model:open="showDeletionConfirmation"
114+
:name="t('user_oidc', 'Confirm deletion')"
115+
:message="deletionConfirmationMessage">
116+
<template #actions>
117+
<NcButton
118+
@click="showDeletionConfirmation = false">
119+
{{ t('user_oidc', 'Cancel') }}
120+
</NcButton>
121+
<NcButton
122+
variant="error"
123+
@click="confirmDelete">
124+
<template #icon>
125+
<TrashCanOutlineIcon />
126+
</template>
127+
{{ t('user_oidc', 'Delete') }}
128+
</NcButton>
129+
</template>
130+
</NcDialog>
113131
</div>
114132
</div>
115133
</template>
116134

117135
<script>
118136
import HelpCircleOutlineIcon from 'vue-material-design-icons/HelpCircleOutline.vue'
119-
import DeleteOutlineIcon from 'vue-material-design-icons/DeleteOutline.vue'
120137
import PencilOutlineIcon from 'vue-material-design-icons/PencilOutline.vue'
121138
import PlusIcon from 'vue-material-design-icons/Plus.vue'
139+
import TrashCanOutlineIcon from 'vue-material-design-icons/TrashCanOutline.vue'
122140
123141
import axios from '@nextcloud/axios'
124142
import { generateUrl } from '@nextcloud/router'
@@ -128,6 +146,7 @@ import NcActionButton from '@nextcloud/vue/components/NcActionButton'
128146
import NcModal from '@nextcloud/vue/components/NcModal'
129147
import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'
130148
import NcButton from '@nextcloud/vue/components/NcButton'
149+
import NcDialog from '@nextcloud/vue/components/NcDialog'
131150
import { confirmPassword } from '@nextcloud/password-confirmation'
132151
133152
import logger from '../logger.js'
@@ -143,7 +162,8 @@ export default {
143162
NcCheckboxRadioSwitch,
144163
NcButton,
145164
PencilOutlineIcon,
146-
DeleteOutlineIcon,
165+
TrashCanOutlineIcon,
166+
NcDialog,
147167
PlusIcon,
148168
HelpCircleOutlineIcon,
149169
},
@@ -193,8 +213,18 @@ export default {
193213
'--color-background-hover': 'var(--color-background-darker)',
194214
},
195215
redirectUri: window.location.protocol + '//' + window.location.host + generateUrl('/apps/user_oidc/code'),
216+
showDeletionConfirmation: false,
217+
providerToDelete: null,
196218
}
197219
},
220+
computed: {
221+
deletionConfirmationMessage() {
222+
if (this.providerToDelete) {
223+
return t('user_oidc', 'Are you sure you want to delete the provider "{providerName}"?', { providerName: this.providerToDelete.identifier })
224+
}
225+
return ''
226+
},
227+
},
198228
methods: {
199229
async onId4MeChange(newValue) {
200230
logger.info('ID4me state changed', { enabled: newValue })
@@ -255,7 +285,15 @@ export default {
255285
showError(t('user_oidc', 'Could not update the provider:') + ' ' + (error.response?.data?.message ?? error.message))
256286
}
257287
},
258-
async onRemove(provider) {
288+
onProviderDeleteClick(provider) {
289+
this.providerToDelete = provider
290+
this.showDeletionConfirmation = true
291+
},
292+
confirmDelete() {
293+
this.deleteProvider(this.providerToDelete)
294+
this.showDeletionConfirmation = false
295+
},
296+
async deleteProvider(provider) {
259297
await confirmPassword()
260298
logger.info('Remove oidc provider', { provider })
261299
@@ -268,6 +306,7 @@ export default {
268306
logger.error('Could not remove a provider: ' + error.message, { error })
269307
showError(t('user_oidc', 'Could not remove provider: {msg}', { msg: error.message }))
270308
}
309+
this.providerToDelete = null
271310
},
272311
async onSubmit() {
273312
await confirmPassword()

0 commit comments

Comments
 (0)