Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -46,6 +46,15 @@
|
||||
:loading="saving"
|
||||
@click="onSave"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="canDeleteThisUser"
|
||||
label="SIL"
|
||||
color="negative"
|
||||
icon="delete"
|
||||
class="q-ml-sm"
|
||||
:loading="deleting"
|
||||
@click="confirmDeleteUser"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="canReadUser"
|
||||
label="LİSTEYE DÖN"
|
||||
@@ -259,10 +268,11 @@ import { storeToRefs } from 'pinia'
|
||||
import { useUserDetailStore } from 'src/stores/UserDetailStore'
|
||||
import { usePermission } from 'src/composables/usePermission'
|
||||
|
||||
const { canRead, canWrite, canUpdate } = usePermission()
|
||||
const { canRead, canWrite, canUpdate, canDelete } = usePermission()
|
||||
const canReadUser = canRead('user')
|
||||
const canWriteUser = canWrite('user')
|
||||
const canUpdateUser = canUpdate('user')
|
||||
const canDeleteUser = canDelete('user')
|
||||
|
||||
const $q = useQuasar()
|
||||
const route = useRoute()
|
||||
@@ -274,6 +284,7 @@ const {
|
||||
form,
|
||||
loading,
|
||||
saving,
|
||||
deleting,
|
||||
roleOptions,
|
||||
departmentOptions,
|
||||
piyasaOptions,
|
||||
@@ -296,6 +307,11 @@ const canAccessPage = computed(() => {
|
||||
const canSaveUser = computed(() => isNew.value ? canWriteUser.value : canUpdateUser.value)
|
||||
|
||||
const userId = computed(() => (isEdit.value || isView.value) ? Number(route.params.id) : null)
|
||||
const canDeleteThisUser = computed(() =>
|
||||
(isEdit.value || isView.value) &&
|
||||
!!userId.value &&
|
||||
canDeleteUser.value
|
||||
)
|
||||
|
||||
const hasPassword = computed(() => store.hasPassword)
|
||||
|
||||
@@ -386,6 +402,36 @@ function goList () {
|
||||
router.push({ name: 'user-list' })
|
||||
}
|
||||
|
||||
function confirmDeleteUser () {
|
||||
if (!canDeleteThisUser.value) {
|
||||
$q.notify({ type: 'negative', message: 'Silme yetkiniz yok' })
|
||||
return
|
||||
}
|
||||
|
||||
const code = (form.value.code || '').trim()
|
||||
const label = code || `ID ${userId.value}`
|
||||
|
||||
$q.dialog({
|
||||
title: 'Kullanici silinsin mi?',
|
||||
message: `${label} kaydi tablodan silinecek. Bu islem geri alinamaz.`,
|
||||
cancel: true,
|
||||
persistent: true
|
||||
}).onOk(async () => {
|
||||
await deleteUser()
|
||||
})
|
||||
}
|
||||
|
||||
async function deleteUser () {
|
||||
try {
|
||||
await store.deleteUser(userId.value)
|
||||
$q.notify({ type: 'positive', message: 'Kullanici silindi' })
|
||||
await router.replace({ name: 'user-list' })
|
||||
window.location.reload()
|
||||
} catch {
|
||||
$q.notify({ type: 'negative', message: store.error || 'Kullanici silinemedi' })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function confirmSendPasswordMail () {
|
||||
$q.dialog({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// src/stores/userDetailStore.js
|
||||
import { defineStore } from 'pinia'
|
||||
import api, { get, post, put } from 'src/services/api'
|
||||
import api, { get, post, put, del } from 'src/services/api'
|
||||
|
||||
export const useUserDetailStore = defineStore('userDetail', {
|
||||
state: () => ({
|
||||
@@ -11,6 +11,7 @@ export const useUserDetailStore = defineStore('userDetail', {
|
||||
/* ================= FLAGS ================= */
|
||||
loading: false,
|
||||
saving: false,
|
||||
deleting: false,
|
||||
error: null,
|
||||
|
||||
/* ================= FORM ================= */
|
||||
@@ -222,6 +223,23 @@ export const useUserDetailStore = defineStore('userDetail', {
|
||||
}
|
||||
},
|
||||
|
||||
/* =====================================================
|
||||
🗑️ DELETE USER
|
||||
===================================================== */
|
||||
async deleteUser (id) {
|
||||
this.deleting = true
|
||||
this.error = null
|
||||
|
||||
try {
|
||||
await del(`/users/${id}`)
|
||||
} catch (e) {
|
||||
this.error = 'Kullanici silinemedi'
|
||||
throw e
|
||||
} finally {
|
||||
this.deleting = false
|
||||
}
|
||||
},
|
||||
|
||||
/* =====================================================
|
||||
📚 LOOKUPS (NEW + EDIT ORTAK)
|
||||
===================================================== */
|
||||
|
||||
Reference in New Issue
Block a user