Show organisation membership in user avatar

This commit is contained in:
D. Berge
2025-07-24 20:41:07 +02:00
parent ccfabf84f7
commit bdeb2b8742

View File

@@ -51,7 +51,7 @@
offset-y offset-y
> >
<template v-slot:activator="{on, attrs}"> <template v-slot:activator="{on, attrs}">
<v-avatar :color="user.colour || 'primary'" :title="`${user.name}\n${Object.keys(user.organisations).join(', ')}`" v-bind="attrs" v-on="on"> <v-avatar :color="user.colour || 'primary'" :title="title" v-bind="attrs" v-on="on">
<span class="white--text">{{user.name.slice(0, 5)}}</span> <span class="white--text">{{user.name.slice(0, 5)}}</span>
</v-avatar> </v-avatar>
</template> </template>
@@ -66,8 +66,29 @@
</v-list-item> </v-list-item>
<v-list-item link to="/logout" v-else> <v-list-item link to="/logout" v-else>
<v-list-item-icon><v-icon small>mdi-logout</v-icon></v-list-item-icon> <v-list-item-icon><v-icon small>mdi-logout</v-icon></v-list-item-icon>
<v-list-item-title>Log out</v-list-item-title> <v-list-item-content>
<v-list-item-title>Log out</v-list-item-title>
</v-list-item-content>
</v-list-item> </v-list-item>
<v-divider></v-divider>
<template v-if="canManageUsers">
<v-list-item link to="/users">
<v-list-item-icon><v-icon small>mdi-account-multiple</v-icon></v-list-item-icon>
<v-list-item-content>
<v-list-item-title>Manage users</v-list-item-title>
<v-list-item-subtitle>Add, edit and remove users</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</template>
<template v-else-if="user && !user.autologin">
<v-list-item link :to="`/users/${user.id}`">
<v-list-item-icon><v-icon small>mdi-account</v-icon></v-list-item-icon>
<v-list-item-content>
<v-list-item-title>User profile</v-list-item-title>
<v-list-item-subtitle>Edit your user profile</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</template>
</v-list> </v-list>
</v-menu> </v-menu>
@@ -102,6 +123,19 @@ export default {
.pop()?.component; .pop()?.component;
}, },
title () {
return this.user.name + "\n" + [...this.user.organisations].map( ({name, operations}) => {
if (name == "*") name = "All organisations";
let str = name+": ";
str += [ "read", "write", "edit" ].map( op => operations[op] ? op : null ).filter( op => op ).join(", ");
return str;
}).join("\n")
},
canManageUsers () {
return this.user.organisations.accessToOperation("edit").length;
},
...mapGetters(['user', 'loading']) ...mapGetters(['user', 'loading'])
}, },