1
0
mirror of https://github.com/flarum/core.git synced 2025-08-06 16:36:47 +02:00

Prompt for nickname on registration (#4)

Allow users to set a nickname while registering, controlled by settings. Also, add a setting to hide the username input entirely and randomly generate the username.

Co-authored-by: Sami Mazouz <sychocouldy@gmail.com>
This commit is contained in:
Alexander Skvortsov
2021-11-17 11:17:36 -05:00
committed by GitHub
parent 745de66d23
commit 3c5229610f
20 changed files with 4172 additions and 2189 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -15,6 +15,17 @@ app.initializers.add('flarum/nicknames', () => {
</div>
);
})
.registerSetting({
setting: 'flarum-nicknames.set_on_registration',
type: 'boolean',
label: app.translator.trans('flarum-nicknames.admin.settings.set_on_registration_label')
})
.registerSetting({
setting: 'flarum-nicknames.random_username',
type: 'boolean',
label: app.translator.trans('flarum-nicknames.admin.settings.random_username_label'),
help: app.translator.trans('flarum-nicknames.admin.settings.random_username_help')
})
.registerSetting({
setting: 'flarum-nicknames.unique',
type: 'boolean',

View File

@@ -1,6 +1,7 @@
import { extend } from 'flarum/common/extend';
import Button from 'flarum/common/components/Button';
import EditUserModal from 'flarum/common/components/EditUserModal';
import SignUpModal from 'flarum/forum/components/SignUpModal';
import SettingsPage from 'flarum/forum/components/SettingsPage';
import Model from 'flarum/common/Model';
import User from 'flarum/common/models/User';
@@ -50,5 +51,60 @@ app.initializers.add('flarum/nicknames', () => {
}
});
extend(SignUpModal.prototype, 'oninit', function () {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
this.nickname = Stream(this.attrs.username || '');
});
extend(SignUpModal.prototype, 'onready', function () {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
if (app.forum.attribute('setNicknameOnRegistration') && app.forum.attribute('randomizeUsernameOnRegistration')) {
this.$('[name=nickname]').select();
}
});
extend(SignUpModal.prototype, 'fields', function (items) {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
if (app.forum.attribute('setNicknameOnRegistration')) {
items.add(
'nickname',
<div className="Form-group">
<input
className="FormControl"
name="nickname"
type="text"
placeholder={extractText(app.translator.trans('flarum-nicknames.forum.sign_up.nickname_placeholder'))}
bidi={this.nickname}
disabled={this.loading || this.isProvided('nickname')}
required={app.forum.attribute('randomizeUsernameOnRegistration')}
/>
</div>,
25
);
if (app.forum.attribute('randomizeUsernameOnRegistration')) {
items.remove('username');
}
}
});
extend(SignUpModal.prototype, 'submitData', function (data) {
if (app.forum.attribute('displayNameDriver') !== 'nickname') return;
if (app.forum.attribute('setNicknameOnRegistration')) {
data.nickname = this.nickname();
if (app.forum.attribute('randomizeUsernameOnRegistration')) {
const arr = new Uint32Array(2);
crypto.getRandomValues(arr);
data.username = arr.join('');
}
}
});
});