Compare commits

..

No commits in common. "7d3e47494f7338ddc9d93b65b169524bc4c2284e" and "542f157b494f1081b65a0fd11104ecdf84c28ac6" have entirely different histories.

4 changed files with 16 additions and 51 deletions

View File

@ -6,23 +6,16 @@
<UserSelector v-model="user" /> <UserSelector v-model="user" />
</div> </div>
</q-card-section> </q-card-section>
<MainUserSettings <MainUserSettings :user="user" @update:user="updateUser" />
:user="user"
:removeable="canDelete && !isCurrentUser"
@update:user="updateUser"
@remove="remove"
/>
</q-card> </q-card>
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref, onMounted } from 'vue'; import { defineComponent, ref, onMounted } from 'vue';
import { hasPermission, useMainStore, useUserStore } from '@flaschengeist/api';
import { Notify } from 'quasar';
import { PERMISSIONS } from '../permissions';
import MainUserSettings from './settings/MainUserSettings.vue'; import MainUserSettings from './settings/MainUserSettings.vue';
import UserSelector from './UserSelector.vue'; import UserSelector from './UserSelector.vue';
import { useMainStore, useUserStore } from '@flaschengeist/api';
import { Notify } from 'quasar';
export default defineComponent({ export default defineComponent({
name: 'UpdateUser', name: 'UpdateUser',
@ -30,10 +23,7 @@ export default defineComponent({
setup() { setup() {
const mainStore = useMainStore(); const mainStore = useMainStore();
const userStore = useUserStore(); const userStore = useUserStore();
const user = ref(mainStore.currentUser); const user = ref(mainStore.currentUser);
const canDelete = computed(() => hasPermission(PERMISSIONS.DELETE));
const isCurrentUser = computed(() => user.value.userid === mainStore.currentUser.userid);
onMounted(() => { onMounted(() => {
void userStore.getUsers(true); void userStore.getUsers(true);
@ -52,15 +42,7 @@ export default defineComponent({
}); });
} }
async function remove() {
await userStore.deleteUser(user.value);
user.value = mainStore.currentUser;
}
return { return {
canDelete,
isCurrentUser,
remove,
user, user,
updateUser, updateUser,
}; };

View File

@ -5,7 +5,7 @@
<q-avatar> <q-avatar>
<q-img :src="avatar" style="min-height: 100%; min-width: 100%"> <q-img :src="avatar" style="min-height: 100%; min-width: 100%">
<template #error> <template #error>
<img src="no-image.svg" style="height: 100%" /> <img src="no-image.svg" style="height: 100%"/>
</template> </template>
</q-img> </q-img>
</q-avatar> </q-avatar>

View File

@ -103,10 +103,7 @@
</q-file> </q-file>
</q-card-section> </q-card-section>
<q-separator v-if="!newUser" /> <q-separator v-if="!newUser" />
<q-card-section <q-card-section v-if="!newUser" class="fit row justify-start content-center items-center">
v-if="!newUser"
class="fit row justify-start content-center items-center q-gutter-y-md"
>
<PasswordInput <PasswordInput
v-if="isCurrentUser" v-if="isCurrentUser"
v-model="password" v-model="password"
@ -125,12 +122,9 @@
class="col-xs-12 col-sm-6 q-pa-sm" class="col-xs-12 col-sm-6 q-pa-sm"
/> />
</q-card-section> </q-card-section>
<q-card-actions :align="removeable ? 'between' : 'right'"> <q-card-actions align="right">
<q-btn v-if="removeable" label="Löschen" color="negative" @click="remove" /> <q-btn label="Reset" type="reset" />
<div> <q-btn color="primary" type="submit" label="Speichern" />
<q-btn label="Reset" type="reset" style="margin-right: 0.5em" />
<q-btn label="Speichern" type="submit" color="primary" />
</div>
</q-card-actions> </q-card-actions>
</q-form> </q-form>
</template> </template>
@ -154,10 +148,6 @@ export default defineComponent({
name: 'MainUserSettings', name: 'MainUserSettings',
components: { IsoDateInput, PasswordInput }, components: { IsoDateInput, PasswordInput },
props: { props: {
removeable: {
type: Boolean,
default: false,
},
user: { user: {
required: true, required: true,
type: Object as PropType<FG.User>, type: Object as PropType<FG.User>,
@ -166,7 +156,6 @@ export default defineComponent({
}, },
emits: { emits: {
'update:user': (payload: FG.User) => !!payload, 'update:user': (payload: FG.User) => !!payload,
remove: () => true,
}, },
setup(props, { emit }) { setup(props, { emit }) {
const userStore = useUserStore(); const userStore = useUserStore();
@ -247,7 +236,7 @@ export default defineComponent({
hasAvatar.value = true; hasAvatar.value = true;
} else if (deleteAvatar.value) { } else if (deleteAvatar.value) {
await userStore.deleteAvatar(changed); await userStore.deleteAvatar(changed);
hasAvatar.value = false; hasAvatar.value = false
} }
password.value = ''; password.value = '';
} }
@ -293,7 +282,6 @@ export default defineComponent({
onAvatarRejected, onAvatarRejected,
password, password,
preview, preview,
remove: () => emit('remove'),
reset, reset,
save, save,
userModel, userModel,

View File

@ -1,17 +1,12 @@
export const PERMISSIONS = { export const PERMISSIONS = {
/* User permissions */ // Kann andere Nutzer bearbeiten
// Can edit other users
EDIT_OTHER: 'users_edit_other', EDIT_OTHER: 'users_edit_other',
// Can assign roles to users // Kann Rollen von Nutzern setzen
SET_ROLES: 'users_set_roles', SET_ROLES: 'users_set_roles',
// Can delete users // Kann Nutzer löschen
DELETE: 'users_delete', DELETE: 'users_delete_other',
// Can register new users // Kann neue Nutzer hinzufügen
REGISTER: 'users_register', REGISTER: 'users_register',
// Kann Rollen löschen oder bearbeiten, z.b. Rechte hinzufügen etc
/* Role permissions */
// Can edit roles, assign permissions to roles and change names
ROLES_EDIT: 'roles_edit', ROLES_EDIT: 'roles_edit',
// Can delete roles
ROLES_DELETE: 'roles_delete',
}; };