Skip to content

Commit

Permalink
Explicitly pass canChange* props to user view
Browse files Browse the repository at this point in the history
  • Loading branch information
distantnative committed Oct 8, 2024
1 parent 9478d4b commit b5db86a
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 9 deletions.
8 changes: 7 additions & 1 deletion panel/src/components/Views/Users/UserAvatar.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<template>
<k-button :title="$t('avatar')" class="k-user-view-image" @click="open">
<k-button
:disabled="isLocked"
:title="$t('avatar')"
class="k-user-view-image"
@click="open"
>
<template v-if="model.avatar">
<k-image-frame :cover="true" :src="model.avatar" />
<k-dropdown-content
Expand Down Expand Up @@ -30,6 +35,7 @@
*/
export default {
props: {
isLocked: Boolean,
model: Object
},
methods: {
Expand Down
12 changes: 9 additions & 3 deletions panel/src/components/Views/Users/UserProfile.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@
icon: 'email',
text: `${model.email}`,
title: `${$t('email')}: ${model.email}`,
disabled: !permissions.changeEmail || isLocked,
disabled: !canChangeEmail,
click: () => $dialog(model.link + '/changeEmail')
},
{
icon: 'bolt',
text: `${model.role}`,
title: `${$t('role')}: ${model.role}`,
disabled: !permissions.changeRole || isLocked,
disabled: !canChangeRole,
click: () => $dialog(model.link + '/changeRole')
},
{
icon: 'translate',
text: `${model.language}`,
title: `${$t('language')}: ${model.language}`,
disabled: !permissions.changeLanguage || isLocked,
disabled: !canChangeLanguage,
click: () => $dialog(model.link + '/changeLanguage')
}
]"
Expand All @@ -37,8 +37,14 @@
*/
export default {
props: {
canChangeEmail: Boolean,
canChangeLanguage: Boolean,
canChangeRole: Boolean,
isLocked: Boolean,
model: Object,
/**
* @deprecated Will be remove in v5
*/
permissions: Object
}
};
Expand Down
14 changes: 12 additions & 2 deletions panel/src/components/Views/Users/UserView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</template>

<k-header
:editable="permissions.changeName && !isLocked"
:editable="canChangeName"
class="k-user-view-header"
@edit="$dialog(id + '/changeName')"
>
Expand Down Expand Up @@ -50,6 +50,10 @@
</k-header>

<k-user-profile
:can-change-email="canChangeEmail"
:can-change-language="canChangeLanguage"
:can-change-name="canChangeName"
:can-change-role="canChangeRole"
:is-locked="isLocked"
:model="model"
:permissions="permissions"
Expand All @@ -71,7 +75,13 @@
import ModelView from "../ModelView.vue";
export default {
extends: ModelView
extends: ModelView,
props: {
canChangeEmail: Boolean,
canChangeLanguage: Boolean,
canChangeName: Boolean,
canChangeRole: Boolean
}
};
</script>

Expand Down
11 changes: 8 additions & 3 deletions src/Panel/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -218,14 +218,19 @@ public function prevNext(): array
*/
public function props(): array
{
$user = $this->model;
$account = $user->isLoggedIn();
$user = $this->model;
$account = $user->isLoggedIn();
$permissions = $this->options();

return array_merge(
parent::props(),
$this->prevNext(),
[
'blueprint' => $this->model->role()->name(),
'blueprint' => $this->model->role()->name(),
'canChangeEmail' => $permissions['changeEmail'],
'canChangeLanguage' => $permissions['changeLanguage'],
'canChangeName' => $permissions['changeName'],
'canChangeRole' => $permissions['changeRole'] && $this->model->roles('changeRole')->count() > 1,
'model' => [
'account' => $account,
'avatar' => $user->avatar()?->url(),
Expand Down

0 comments on commit b5db86a

Please sign in to comment.