Add more validation rules for player name
This commit is contained in:
parent
6926ae21ff
commit
abde385776
@ -179,7 +179,19 @@ class AdminController extends Controller
|
|||||||
->text('max_upload_file_size')->addon('KB')
|
->text('max_upload_file_size')->addon('KB')
|
||||||
->hint(trans('options.general.max_upload_file_size.hint', ['size' => ini_get('upload_max_filesize')]));
|
->hint(trans('options.general.max_upload_file_size.hint', ['size' => ini_get('upload_max_filesize')]));
|
||||||
|
|
||||||
$form->checkbox('allow_chinese_playername')->label();
|
$form->select('player_name_rule')
|
||||||
|
->option('official', trans('options.general.player_name_rule.official'))
|
||||||
|
->option('cjk', trans('options.general.player_name_rule.cjk'))
|
||||||
|
->option('custom', trans('options.general.player_name_rule.custom'));
|
||||||
|
|
||||||
|
$form->text('custom_player_name_regexp')->hint()->placeholder();
|
||||||
|
|
||||||
|
$form->group('player_name_length')
|
||||||
|
->addon(trans('options.general.player_name_length.addon1'))
|
||||||
|
->text('player_name_length_min')
|
||||||
|
->addon(trans('options.general.player_name_length.addon2'))
|
||||||
|
->text('player_name_length_max')
|
||||||
|
->addon(trans('options.general.player_name_length.addon3'));
|
||||||
|
|
||||||
$form->select('api_type')
|
$form->select('api_type')
|
||||||
->option('0', 'CustomSkinLoader API')
|
->option('0', 'CustomSkinLoader API')
|
||||||
@ -305,7 +317,7 @@ class AdminController extends Controller
|
|||||||
|
|
||||||
} elseif ($action == "nickname") {
|
} elseif ($action == "nickname") {
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'nickname' => 'required|nickname'
|
'nickname' => 'required|no_special_chars'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user->setNickName($request->input('nickname'));
|
$user->setNickName($request->input('nickname'));
|
||||||
|
@ -109,7 +109,7 @@ class AuthController extends Controller
|
|||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'email' => 'required|email',
|
'email' => 'required|email',
|
||||||
'password' => 'required|min:8|max:32',
|
'password' => 'required|min:8|max:32',
|
||||||
'nickname' => 'required|nickname|max:255'
|
'nickname' => 'required|no_special_chars|max:255'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (! option('user_can_register')) {
|
if (! option('user_can_register')) {
|
||||||
|
@ -59,7 +59,7 @@ class PlayerController extends Controller
|
|||||||
public function add(Request $request)
|
public function add(Request $request)
|
||||||
{
|
{
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'player_name' => 'required|'.(option('allow_chinese_playername') ? 'pname_chinese' : 'playername')
|
'player_name' => 'required|player_name|min:'.option('player_name_length_min').'|max:'.option('player_name_length_max')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
event(new CheckPlayerExists($request->input('player_name')));
|
event(new CheckPlayerExists($request->input('player_name')));
|
||||||
@ -114,7 +114,7 @@ class PlayerController extends Controller
|
|||||||
public function rename(Request $request)
|
public function rename(Request $request)
|
||||||
{
|
{
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'new_player_name' => 'required|'.(option('allow_chinese_playername') ? 'pname_chinese' : 'playername')
|
'new_player_name' => 'required|player_name|min:'.option('player_name_length_min').'|max:'.option('player_name_length_max')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$newName = $request->input('new_player_name');
|
$newName = $request->input('new_player_name');
|
||||||
|
@ -20,40 +20,63 @@ class ValidatorExtendServiceProvider extends ServiceProvider
|
|||||||
* @param $p parameters
|
* @param $p parameters
|
||||||
* @param $v validator
|
* @param $v validator
|
||||||
*/
|
*/
|
||||||
Validator::extend('username', function($a, $value, $p, $v) {
|
Validator::extend('no_special_chars', function ($a, $value, $p, $v) {
|
||||||
return preg_match("/^([A-Za-z0-9\x{4e00}-\x{9fa5}_]+)$/u", $value);
|
return $value === addslashes(trim($value));
|
||||||
});
|
});
|
||||||
|
|
||||||
Validator::extend('nickname', function($a, $value, $p, $v) {
|
Validator::extend('player_name', function ($a, $value, $p, $v) {
|
||||||
return $value == addslashes(trim($value));
|
$regexp = '/^(.*)$/';
|
||||||
|
|
||||||
|
switch (option('player_name_rule')) {
|
||||||
|
case 'official':
|
||||||
|
// Mojang's official username rule
|
||||||
|
$regexp = '/^([A-Za-z0-9_]+)$/';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'cjk':
|
||||||
|
// CJK Unified Ideographs
|
||||||
|
$regexp = '/^([A-Za-z0-9_\x{4e00}-\x{9fff}]+)$/u';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'custom':
|
||||||
|
$regexp = option('custom_player_name_regexp') ?: $regexp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return preg_match($regexp, $value);
|
||||||
});
|
});
|
||||||
|
|
||||||
Validator::extend('no_special_chars', function($a, $value, $p, $v) {
|
Validator::extend('preference', function ($a, $value, $p, $v) {
|
||||||
return $value == addslashes(trim($value));
|
return preg_match('/^(default|slim)$/', $value);
|
||||||
});
|
});
|
||||||
|
|
||||||
Validator::extend('playername', function($a, $value, $p, $v) {
|
Validator::extend('model', function ($a, $value, $p, $v) {
|
||||||
return preg_match("/^([A-Za-z0-9_]+)$/", $value);
|
return preg_match('/^(steve|alex|cape)$/', $value);
|
||||||
});
|
});
|
||||||
|
|
||||||
Validator::extend('pname_chinese', function($a, $value, $p, $v) {
|
$this->registerExpiredRules();
|
||||||
return preg_match("/^([A-Za-z0-9\x{4e00}-\x{9fa5}_]+)$/u", $value);
|
|
||||||
});
|
|
||||||
|
|
||||||
Validator::extend('preference', function($a, $value, $p, $v) {
|
|
||||||
return preg_match("/^(default|slim)$/", $value);
|
|
||||||
});
|
|
||||||
|
|
||||||
Validator::extend('model', function($a, $value, $p, $v) {
|
|
||||||
return preg_match("/^(steve|alex|cape)$/", $value);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register any application services.
|
* Register these for the compatibility with plugins using old rules.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
protected function registerExpiredRules()
|
||||||
|
{
|
||||||
|
Validator::extend('nickname', function ($a, $value, $p, $v) {
|
||||||
|
return $value === addslashes(trim($value));
|
||||||
|
});
|
||||||
|
|
||||||
|
Validator::extend('playername', function($a, $value, $p, $v) {
|
||||||
|
return preg_match('/^([A-Za-z0-9_]+)$/', $value);
|
||||||
|
});
|
||||||
|
|
||||||
|
Validator::extend('pname_chinese', function ($a, $value, $p, $v) {
|
||||||
|
return preg_match('/^([A-Za-z0-9_\x{4e00}-\x{9fff}]+)$/u', $value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -13,7 +13,10 @@ return [
|
|||||||
'home_pic_url' => './resources/assets/dist/images/bg.jpg',
|
'home_pic_url' => './resources/assets/dist/images/bg.jpg',
|
||||||
'custom_css' => '',
|
'custom_css' => '',
|
||||||
'custom_js' => '',
|
'custom_js' => '',
|
||||||
'allow_chinese_playername' => 'true',
|
'player_name_rule' => 'official',
|
||||||
|
'custom_player_name_regexp' => '',
|
||||||
|
'player_name_length_min' => '3',
|
||||||
|
'player_name_length_max' => '16',
|
||||||
'comment_script' => '',
|
'comment_script' => '',
|
||||||
'allow_sending_statistics' => 'true',
|
'allow_sending_statistics' => 'true',
|
||||||
'user_initial_score' => '1000',
|
'user_initial_score' => '1000',
|
||||||
|
@ -82,9 +82,20 @@ general:
|
|||||||
max_upload_file_size:
|
max_upload_file_size:
|
||||||
title: Max Upload Size
|
title: Max Upload Size
|
||||||
hint: "Limit of PHP in php.ini: :size"
|
hint: "Limit of PHP in php.ini: :size"
|
||||||
allow_chinese_playername:
|
player_name_rule:
|
||||||
title: Player Name
|
title: Player Name Rule
|
||||||
label: Allow chinese player names.
|
official: Letters, numbers and underscores (Mojang's official rule)
|
||||||
|
cjk: Allow CJK Unified Ideographs
|
||||||
|
custom: Use custom rules (regular expression)
|
||||||
|
custom_player_name_regexp:
|
||||||
|
title: Custom Player Name Rules
|
||||||
|
hint: Only takes effect when the above option is set to 'custom'. Leave empty to allow any character.
|
||||||
|
placeholder: Regular Expressions
|
||||||
|
player_name_length:
|
||||||
|
title: Player Name Length
|
||||||
|
addon1: Minimum
|
||||||
|
addon2: characters, maximum
|
||||||
|
addon3: characters
|
||||||
api_type: Prefered JSON API
|
api_type: Prefered JSON API
|
||||||
auto_del_invalid_texture:
|
auto_del_invalid_texture:
|
||||||
title: Invalid Textures
|
title: Invalid Textures
|
||||||
|
@ -80,6 +80,13 @@ player:
|
|||||||
pname-rule: Could only contain letters, numbers and dashes.
|
pname-rule: Could only contain letters, numbers and dashes.
|
||||||
pname-rule-chinese: Could only contain chinese characters, letters, numbers and dashes.
|
pname-rule-chinese: Could only contain chinese characters, letters, numbers and dashes.
|
||||||
|
|
||||||
|
player-name-rule:
|
||||||
|
official: Player name may only contains letters, numbers and underscores.
|
||||||
|
cjk: Player name may contains letters, numbers, underscores and CJK Unified Ideographs.
|
||||||
|
custom: Custom player name rules are applied on this site. Please contact admins for further information.
|
||||||
|
|
||||||
|
player-name-length: The player name should be at least :min characters and not greater than :max characters.
|
||||||
|
|
||||||
add:
|
add:
|
||||||
repeated: The player name is already registered.
|
repeated: The player name is already registered.
|
||||||
lack-score: You don't have enough score to add a player.
|
lack-score: You don't have enough score to add a player.
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
# Blessing Skin
|
# Blessing Skin
|
||||||
username: ':attribute format is invalid.'
|
username: ':attribute format is invalid.'
|
||||||
nickname: ':attribute format is invalid.'
|
player_name: 'The :attribute contains invalid character.'
|
||||||
playername: 'The :attribute may only contain letters, numbers and dashes.'
|
|
||||||
pname_chinese: 'The :attribute may only contain letters, numbers, dashes and chinese characters.'
|
|
||||||
no_special_chars: 'The :attribute must not contain special characters.'
|
no_special_chars: 'The :attribute must not contain special characters.'
|
||||||
preference: 'The :attribute must be default or slim.'
|
preference: 'The :attribute must be default or slim.'
|
||||||
model: 'The :attribute must be steve, alex or cape.'
|
model: 'The :attribute must be steve, alex or cape.'
|
||||||
|
@ -82,9 +82,20 @@ general:
|
|||||||
max_upload_file_size:
|
max_upload_file_size:
|
||||||
title: 最大允许上传大小
|
title: 最大允许上传大小
|
||||||
hint: PHP 限制::size,定义在 php.ini 中。
|
hint: PHP 限制::size,定义在 php.ini 中。
|
||||||
allow_chinese_playername:
|
player_name_rule:
|
||||||
title: 角色名
|
title: 角色名规则
|
||||||
label: 允许中文角色名
|
official: 大小写字母数字下划线(Mojang 官方的用户名规则)
|
||||||
|
cjk: 允许中文字符(中日韩统一表意文字)
|
||||||
|
custom: 自定义(使用下方设置的正则表达式)
|
||||||
|
custom_player_name_regexp:
|
||||||
|
title: 自定义角色名规则
|
||||||
|
hint: 正则表达式,仅当上一选项为「自定义」时生效。留空表示允许使用任意字符。
|
||||||
|
placeholder: 正则表达式,不懂别乱填
|
||||||
|
player_name_length:
|
||||||
|
title: 角色名长度
|
||||||
|
addon1: 最少
|
||||||
|
addon2: 个字符,最多
|
||||||
|
addon3: 个字符
|
||||||
api_type: 首选 JSON API
|
api_type: 首选 JSON API
|
||||||
auto_del_invalid_texture:
|
auto_del_invalid_texture:
|
||||||
title: 失效材质
|
title: 失效材质
|
||||||
|
@ -84,8 +84,12 @@ player:
|
|||||||
cape: 披风:
|
cape: 披风:
|
||||||
empty: 未上传
|
empty: 未上传
|
||||||
|
|
||||||
pname-rule: 只能包含数字、字母以及下划线
|
player-name-rule:
|
||||||
pname-rule-chinese: 可使用汉字,字母数字以及下划线
|
official: 角色名只能包含拉丁字母、数字以及下划线。
|
||||||
|
cjk: 角色名可使用拉丁字母、数字、下划线以及汉字(中日韩统一表意文字)。
|
||||||
|
custom: 本站使用了自定义的角色名规则,详情请咨询站点管理员。
|
||||||
|
|
||||||
|
player-name-length: 角色名最少要求 :min 个字符,最多不超过 :max 个字符。
|
||||||
|
|
||||||
add:
|
add:
|
||||||
repeated: 该角色名已经被其他人注册掉啦
|
repeated: 该角色名已经被其他人注册掉啦
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
# Blessing Skin
|
# Blessing Skin
|
||||||
username: ':attribute 格式错误。'
|
username: ':attribute 格式错误。'
|
||||||
nickname: ':attribute 格式错误。'
|
player_name: ':attribute 不符合规则。'
|
||||||
playername: ':attribute 只能包含数字、字母以及下划线。'
|
|
||||||
pname_chinese: ':attribute 只能包含数字、字母、汉字以及下划线。'
|
|
||||||
no_special_chars: ':attribute 不能包含特殊字母。'
|
no_special_chars: ':attribute 不能包含特殊字母。'
|
||||||
preference: ':attribute 的值必须为 default 或 slim。'
|
preference: ':attribute 的值必须为 default 或 slim。'
|
||||||
model: ':attribute 的值必须为 steve、alex 或 cape。'
|
model: ':attribute 的值必须为 steve、alex 或 cape。'
|
||||||
|
@ -113,15 +113,20 @@
|
|||||||
<table class="table">
|
<table class="table">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<style> td { border-top: 0 !important; } </style>
|
<td class="key">{{ trans('user.player.player-name') }}</td>
|
||||||
<td>{{ trans('user.player.player-name') }}</td>
|
<td class="value">
|
||||||
<td>
|
<input type="text" class="form-control" id="player_name" value="">
|
||||||
<input type="text" class="form-control" id="player_name"
|
|
||||||
placeholder="{{ option('allow_chinese_playername') ? trans('user.player.pname-rule-chinese') : trans('user.player.pname-rule') }}" value="">
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div class="callout callout-info">
|
||||||
|
<ul style="padding: 0 0 0 20px; margin: 0;">
|
||||||
|
<li>{{ trans('user.player.player-name-rule.'.option('player_name_rule')) }}</li>
|
||||||
|
<li>{{ trans('user.player.player-name-length', ['min' => option('player_name_length_min'), 'max' => option('player_name_length_max')]) }}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('general.close') }}</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('general.close') }}</button>
|
||||||
|
@ -106,7 +106,8 @@ class AdminControllerTest extends TestCase
|
|||||||
'options.general.max_upload_file_size.hint',
|
'options.general.max_upload_file_size.hint',
|
||||||
['size' => ini_get('upload_max_filesize')]
|
['size' => ini_get('upload_max_filesize')]
|
||||||
))
|
))
|
||||||
->uncheck('allow_chinese_playername')
|
->select('cjk', 'player_name_rule')
|
||||||
|
->type('/^([0-9]+)$/', 'custom_player_name_regexp')
|
||||||
->select('1', 'api_type')
|
->select('1', 'api_type')
|
||||||
->check('auto_del_invalid_texture')
|
->check('auto_del_invalid_texture')
|
||||||
->type('code', 'comment_script')
|
->type('code', 'comment_script')
|
||||||
@ -119,7 +120,8 @@ class AdminControllerTest extends TestCase
|
|||||||
$this->assertEquals('8', option('regs_per_ip'));
|
$this->assertEquals('8', option('regs_per_ip'));
|
||||||
$this->assertEquals('1', option('ip_get_method'));
|
$this->assertEquals('1', option('ip_get_method'));
|
||||||
$this->assertEquals('2048', option('max_upload_file_size'));
|
$this->assertEquals('2048', option('max_upload_file_size'));
|
||||||
$this->assertFalse(option('allow_chinese_playername'));
|
$this->assertEquals('cjk', option('player_name_rule'));
|
||||||
|
$this->assertEquals('/^([0-9]+)$/', option('custom_player_name_regexp'));
|
||||||
$this->assertEquals('1', option('api_type'));
|
$this->assertEquals('1', option('api_type'));
|
||||||
$this->assertTrue(option('auto_del_invalid_texture'));
|
$this->assertTrue(option('auto_del_invalid_texture'));
|
||||||
$this->assertEquals('code', option('comment_script'));
|
$this->assertEquals('code', option('comment_script'));
|
||||||
@ -298,14 +300,14 @@ class AdminControllerTest extends TestCase
|
|||||||
'msg' => trans('validation.required', ['attribute' => 'nickname'])
|
'msg' => trans('validation.required', ['attribute' => 'nickname'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Action is `email` but with an invalid nickname
|
// Action is `nickname` but with an invalid nickname
|
||||||
$this->post(
|
$this->post(
|
||||||
'/admin/users',
|
'/admin/users',
|
||||||
['uid' => $user->uid, 'action' => 'nickname', 'nickname' => '\\'],
|
['uid' => $user->uid, 'action' => 'nickname', 'nickname' => '\\'],
|
||||||
['X-Requested-With' => 'XMLHttpRequest']
|
['X-Requested-With' => 'XMLHttpRequest']
|
||||||
)->seeJson([
|
)->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.nickname', ['attribute' => 'nickname'])
|
'msg' => trans('validation.no_special_chars', ['attribute' => 'nickname'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Set nickname successfully
|
// Set nickname successfully
|
||||||
|
@ -295,7 +295,7 @@ class AuthControllerTest extends TestCase
|
|||||||
['X-Requested-With' => 'XMLHttpRequest']
|
['X-Requested-With' => 'XMLHttpRequest']
|
||||||
)->seeJson([
|
)->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.nickname', ['attribute' => 'nickname'])
|
'msg' => trans('validation.no_special_chars', ['attribute' => 'nickname'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Should return a warning if `nickname` is too long
|
// Should return a warning if `nickname` is too long
|
||||||
|
@ -34,32 +34,47 @@ class PlayerControllerTest extends TestCase
|
|||||||
'msg' => trans('validation.required', ['attribute' => 'Player Name'])
|
'msg' => trans('validation.required', ['attribute' => 'Player Name'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Not allowed to use Chinese characters
|
// Only A-Za-z0-9_ are allowed
|
||||||
option(['allow_chinese_playername' => false]);
|
option(['player_name_rule' => 'official']);
|
||||||
$this->post('/user/player/add', [
|
$this->post(
|
||||||
'player_name' => '角色名'
|
'/user/player/add',
|
||||||
], ['X-Requested-With' => 'XMLHttpRequest'])
|
['player_name' => '角色名'],
|
||||||
->seeJson([
|
['X-Requested-With' => 'XMLHttpRequest']
|
||||||
|
)->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.playername', ['attribute' => 'Player Name'])
|
'msg' => trans('validation.player_name', ['attribute' => 'Player Name'])
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Custom player name rule (regexp)
|
||||||
|
option(['player_name_rule' => 'custom']);
|
||||||
|
option(['custom_player_name_regexp' => '/^([0-9]+)$/']);
|
||||||
|
$this->post(
|
||||||
|
'/user/player/add',
|
||||||
|
['player_name' => 'yjsnpi'],
|
||||||
|
['X-Requested-With' => 'XMLHttpRequest']
|
||||||
|
)->seeJson([
|
||||||
|
'errno' => 1,
|
||||||
|
'msg' => trans('validation.player_name', ['attribute' => 'Player Name'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Lack of score
|
// Lack of score
|
||||||
|
option(['player_name_rule' => 'official']);
|
||||||
$user = factory(User::class)->create(['score' => 0]);
|
$user = factory(User::class)->create(['score' => 0]);
|
||||||
$this->actAs($user)
|
$this->actAs($user)->post(
|
||||||
->post('/user/player/add', ['player_name' => 'no_score'])
|
'/user/player/add',
|
||||||
->seeJson([
|
['player_name' => 'no_score'],
|
||||||
|
['X-Requested-With' => 'XMLHttpRequest']
|
||||||
|
)->seeJson([
|
||||||
'errno' => 7,
|
'errno' => 7,
|
||||||
'msg' => trans('user.player.add.lack-score')
|
'msg' => trans('user.player.add.lack-score')
|
||||||
]);
|
]);
|
||||||
$this->expectsEvents(Events\CheckPlayerExists::class);
|
$this->expectsEvents(Events\CheckPlayerExists::class);
|
||||||
|
|
||||||
// Allowed to use Chinese characters
|
// Allowed to use CJK characters
|
||||||
option(['allow_chinese_playername' => true]);
|
option(['player_name_rule' => 'cjk']);
|
||||||
$user = factory(User::class)->create();
|
$user = factory(User::class)->create();
|
||||||
$score = $user->score;
|
$score = $user->score;
|
||||||
$this->actAs($user)
|
$this->actAs($user)->post('/user/player/add', [
|
||||||
->post('/user/player/add', [
|
|
||||||
'player_name' => '角色名'
|
'player_name' => '角色名'
|
||||||
])->seeJson([
|
])->seeJson([
|
||||||
'errno' => 0,
|
'errno' => 0,
|
||||||
@ -142,20 +157,20 @@ class PlayerControllerTest extends TestCase
|
|||||||
'msg' => trans('validation.required', ['attribute' => 'Player Name'])
|
'msg' => trans('validation.required', ['attribute' => 'Player Name'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Chinese characters are not allowed
|
// Only A-Za-z0-9_ are allowed
|
||||||
option(['allow_chinese_playername' => false]);
|
option(['player_name_rule' => 'official']);
|
||||||
$this->post('/user/player/rename', [
|
$this->post('/user/player/rename',[
|
||||||
'pid' => $player->pid,
|
'pid' => $player->pid,
|
||||||
'new_player_name' => '角色名'
|
'new_player_name' => '角色名'
|
||||||
], [
|
], [
|
||||||
'X-Requested-With' => 'XMLHttpRequest'
|
'X-Requested-With' => 'XMLHttpRequest'
|
||||||
])->seeJson([
|
])->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.playername', ['attribute' => 'Player Name'])
|
'msg' => trans('validation.player_name', ['attribute' => 'Player Name'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Other invalid characters
|
// Other invalid characters
|
||||||
option(['allow_chinese_playername' => true]);
|
option(['player_name_rule' => 'cjk']);
|
||||||
$this->post('/user/player/rename', [
|
$this->post('/user/player/rename', [
|
||||||
'pid' => $player->pid,
|
'pid' => $player->pid,
|
||||||
'new_player_name' => '\\'
|
'new_player_name' => '\\'
|
||||||
@ -163,7 +178,7 @@ class PlayerControllerTest extends TestCase
|
|||||||
'X-Requested-With' => 'XMLHttpRequest'
|
'X-Requested-With' => 'XMLHttpRequest'
|
||||||
])->seeJson([
|
])->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.pname_chinese', ['attribute' => 'Player Name'])
|
'msg' => trans('validation.player_name', ['attribute' => 'Player Name'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Use a duplicated player name
|
// Use a duplicated player name
|
||||||
|
@ -133,7 +133,7 @@ class UserControllerTest extends TestCase
|
|||||||
'X-Requested-With' => 'XMLHttpRequest'
|
'X-Requested-With' => 'XMLHttpRequest'
|
||||||
])->seeJson([
|
])->seeJson([
|
||||||
'errno' => 1,
|
'errno' => 1,
|
||||||
'msg' => trans('validation.nickname', ['attribute' => 'new nickname'])
|
'msg' => trans('validation.no_special_chars', ['attribute' => 'new nickname'])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Too long nickname
|
// Too long nickname
|
||||||
|
Loading…
Reference in New Issue
Block a user