1
0
mirror of https://github.com/flarum/core.git synced 2025-07-15 13:56:23 +02:00

Make frontend use gate output instead of hard-coded logic

Hide nickname from edit modal if user cannot edit
This commit is contained in:
Clark Winkelmann
2022-02-21 15:56:51 +01:00
committed by Daniël Klabbers
parent 4cce5fbbda
commit 05e936bbe4
2 changed files with 8 additions and 8 deletions

View File

@ -35,9 +35,8 @@ return [
->listen(Saving::class, SaveNicknameToDatabase::class),
(new Extend\ApiSerializer(UserSerializer::class))
->attribute('canEditOwnNickname', function ($serializer, $user) {
$actor = $serializer->getActor();
return $actor->id === $user->id && $serializer->getActor()->can('editOwnNickname', $user);
->attribute('canEditNickname', function (UserSerializer $serializer, User $user) {
return $serializer->getActor()->can('editNickname', $user);
}),
(new Extend\Settings())

View File

@ -11,12 +11,12 @@ import Stream from 'flarum/common/utils/Stream';
import NickNameModal from './components/NicknameModal';
app.initializers.add('flarum/nicknames', () => {
User.prototype.canEditOwnNickname = Model.attribute('canEditOwnNickname');
User.prototype.canEditNickname = Model.attribute('canEditNickname');
extend(SettingsPage.prototype, 'accountItems', function (items) {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
if (this.user.canEditOwnNickname()) {
if (this.user.canEditNickname()) {
items.add(
'changeNickname',
<Button className="Button" onclick={() => app.modal.show(NickNameModal)}>
@ -27,14 +27,14 @@ app.initializers.add('flarum/nicknames', () => {
});
extend(EditUserModal.prototype, 'oninit', function () {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
this.nickname = Stream(this.attrs.user.displayName());
});
extend(EditUserModal.prototype, 'fields', function (items) {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
if (!this.attrs.user.canEditNickname()) return;
items.add(
'nickname',
<div className="Form-group">
@ -52,7 +52,8 @@ app.initializers.add('flarum/nicknames', () => {
extend(EditUserModal.prototype, 'data', function (data) {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
const user = this.attrs.user;
if (!this.attrs.user.canEditNickname()) return;
if (this.nickname() !== this.attrs.user.displayName()) {
data.nickname = this.nickname();
}