1
0
mirror of https://github.com/flarum/core.git synced 2025-07-15 22:06:24 +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), ->listen(Saving::class, SaveNicknameToDatabase::class),
(new Extend\ApiSerializer(UserSerializer::class)) (new Extend\ApiSerializer(UserSerializer::class))
->attribute('canEditOwnNickname', function ($serializer, $user) { ->attribute('canEditNickname', function (UserSerializer $serializer, User $user) {
$actor = $serializer->getActor(); return $serializer->getActor()->can('editNickname', $user);
return $actor->id === $user->id && $serializer->getActor()->can('editOwnNickname', $user);
}), }),
(new Extend\Settings()) (new Extend\Settings())

View File

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