Files
mixtape/zero.Backoffice.UI/old_app/pages/settings/users.vue
T

117 lines
2.6 KiB
Vue
Raw Normal View History

2020-04-13 02:49:11 +02:00
<template>
2020-04-16 14:51:18 +02:00
<div class="users">
2021-09-07 15:53:47 +02:00
<ui-header-bar title="@user.title" :back-button="true">
2020-10-19 14:48:21 +02:00
<ui-table-filter :attach="$refs.usersTable" />
2021-09-07 15:53:47 +02:00
<ui-add-button type="light onbg" :route="createRoleRoute" label="@user.add_role" />
2021-09-23 11:29:10 +02:00
<ui-add-button type="accent" route="users-create" label="@user.add_user" />
2020-04-13 02:49:11 +02:00
</ui-header-bar>
2020-04-24 12:46:25 +02:00
2020-04-16 14:51:18 +02:00
<div class="ui-blank-box">
2020-04-24 15:13:54 +02:00
<h2 class="ui-headline users-group-headline" v-localize="'@role.roles'"></h2>
2020-04-24 12:46:25 +02:00
<div class="users-roles">
2021-12-23 14:39:00 +01:00
<ui-link v-for="role in roles" :key="role.id" :to="getRoleLink(role)" class="users-role">
2021-01-17 20:04:43 +01:00
<ui-icon class="users-role-icon" :symbol="role.icon" :size="24" />
2020-04-24 12:46:25 +02:00
<strong>{{role.name}}</strong>
<span class="users-role-minor" v-localize="{ key: role.countClaims !== 1 ? '@user.count_permissions' : '@user.one_permission', tokens: { count: role.claims.length }}"></span>
2021-12-23 14:39:00 +01:00
</ui-link>
2020-04-24 12:46:25 +02:00
</div>
</div>
<div class="ui-blank-box">
<h2 class="ui-headline users-group-headline" v-localize="'@user.users'"></h2>
2020-10-19 14:48:21 +02:00
<ui-table ref="usersTable" config="users" />
2020-04-16 14:51:18 +02:00
</div>
</div>
2020-04-13 02:49:11 +02:00
</template>
<script>
2020-11-20 15:17:41 +01:00
import UserRolesApi from 'zero/api/userRoles.js';
2020-04-13 02:49:11 +02:00
2020-04-16 14:51:18 +02:00
export default {
2020-04-13 02:49:11 +02:00
data: () => ({
2020-10-16 14:02:10 +02:00
createRoleRoute: 'roles-create',
2020-10-19 14:48:21 +02:00
roles: []
2020-04-13 02:49:11 +02:00
}),
created()
{
2020-04-29 12:11:35 +02:00
UserRolesApi.getAll().then(items =>
{
this.roles = items;
});
2020-04-13 02:49:11 +02:00
},
methods: {
2020-04-24 12:46:25 +02:00
getRoleLink(item)
2020-04-13 02:49:11 +02:00
{
2020-04-24 12:46:25 +02:00
return {
2020-10-16 14:02:10 +02:00
name: 'roles-edit',
2020-11-22 22:31:45 +01:00
params: { id: item.id },
2021-09-23 11:29:10 +02:00
query: { scope: 'shared' }
2020-04-24 12:46:25 +02:00
};
}
2020-04-13 02:49:11 +02:00
}
}
</script>
<style lang="scss">
2020-04-24 12:46:25 +02:00
h2.users-group-headline
{
2020-10-19 14:48:21 +02:00
margin-bottom: 30px !important;
2020-04-24 12:46:25 +02:00
}
2020-06-03 15:16:43 +02:00
.users .ui-table-field-image
2020-04-24 12:46:25 +02:00
{
border-radius: 50px;
}
.users .ui-table-cell[table-field="avatar"]
{
padding: 12px;
padding-left: 20px;
}
.users .ui-table-cell[table-field="name"]
{
border-left-color: transparent;
}
.users-roles
{
display: grid;
gap: var(--padding);
2020-04-24 12:46:25 +02:00
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
align-items: stretch;
margin-bottom: calc(var(--padding) * 2);
}
a.users-role
{
display: flex;
flex-direction: column;
background: var(--color-box);
2020-04-24 12:46:25 +02:00
border-radius: var(--radius);
padding: var(--padding-m) var(--padding);
2020-04-24 12:46:25 +02:00
text-align: center;
color: var(--color-text);
2020-04-24 12:46:25 +02:00
font-size: var(--font-size);
line-height: 1.5;
box-shadow: var(--shadow-short);
2020-04-24 12:46:25 +02:00
}
.users-role-minor
{
color: var(--color-text-dim);
2020-04-24 12:46:25 +02:00
}
.users-role-icon
{
text-align: center;
display: inline-block;
margin: 0 auto var(--padding-m);
2020-04-24 12:46:25 +02:00
position: relative;
}
2020-04-13 02:49:11 +02:00
</style>