mirror of
https://github.com/flarum/core.git
synced 2025-07-16 14:26:25 +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:
committed by
Daniël Klabbers
parent
4cce5fbbda
commit
05e936bbe4
@ -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())
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user