new player name rule: allow UTF-8
This commit is contained in:
parent
1b0e9ae8d5
commit
baf4921479
|
|
@ -164,6 +164,7 @@ class OptionsController extends Controller
|
||||||
$form->select('player_name_rule')
|
$form->select('player_name_rule')
|
||||||
->option('official', trans('options.general.player_name_rule.official'))
|
->option('official', trans('options.general.player_name_rule.official'))
|
||||||
->option('cjk', trans('options.general.player_name_rule.cjk'))
|
->option('cjk', trans('options.general.player_name_rule.cjk'))
|
||||||
|
->option('utf8', trans('options.general.player_name_rule.utf8'))
|
||||||
->option('custom', trans('options.general.player_name_rule.custom'));
|
->option('custom', trans('options.general.player_name_rule.custom'));
|
||||||
|
|
||||||
$form->text('custom_player_name_regexp')->hint()->placeholder();
|
$form->text('custom_player_name_regexp')->hint()->placeholder();
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ class PlayerName implements Rule
|
||||||
$regexp = '/^[A-Za-z0-9_§\x{4e00}-\x{9fff}]+$/u';
|
$regexp = '/^[A-Za-z0-9_§\x{4e00}-\x{9fff}]+$/u';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'utf8':
|
||||||
|
return mb_check_encoding($value, 'UTF-8');
|
||||||
|
|
||||||
case 'custom':
|
case 'custom':
|
||||||
$regexp = option('custom_player_name_regexp') ?: $regexp;
|
$regexp = option('custom_player_name_regexp') ?: $regexp;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,7 @@ general:
|
||||||
title: Player Name Rule
|
title: Player Name Rule
|
||||||
official: Letters, numbers and underscores (Mojang's official rule)
|
official: Letters, numbers and underscores (Mojang's official rule)
|
||||||
cjk: Allow CJK Unified Ideographs
|
cjk: Allow CJK Unified Ideographs
|
||||||
|
utf8: Allow all valid UTF-8 characters
|
||||||
custom: Use custom rules (regular expression)
|
custom: Use custom rules (regular expression)
|
||||||
custom_player_name_regexp:
|
custom_player_name_regexp:
|
||||||
title: Custom Player Name Rules
|
title: Custom Player Name Rules
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ player:
|
||||||
player-name-rule:
|
player-name-rule:
|
||||||
official: Player name may only contains letters, numbers and underscores.
|
official: Player name may only contains letters, numbers and underscores.
|
||||||
cjk: Player name may contains letters, numbers, underscores and CJK Unified Ideographs.
|
cjk: Player name may contains letters, numbers, underscores and CJK Unified Ideographs.
|
||||||
|
utf8: Player name must be a UTF-8 string.
|
||||||
custom: Custom player name rules are applied on this site. Please contact admins for further information.
|
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.
|
player-name-length: The player name should be at least :min characters and not greater than :max characters.
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,6 @@ class PlayerControllerTest extends TestCase
|
||||||
|
|
||||||
public function testAdd()
|
public function testAdd()
|
||||||
{
|
{
|
||||||
Event::fake();
|
|
||||||
$filter = Fakes\Filter::fake();
|
|
||||||
|
|
||||||
// Without player name
|
// Without player name
|
||||||
$this->postJson(route('user.player.add'))->assertJsonValidationErrors('name');
|
$this->postJson(route('user.player.add'))->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
|
|
@ -74,12 +71,23 @@ class PlayerControllerTest extends TestCase
|
||||||
['name' => 'yjsnpi']
|
['name' => 'yjsnpi']
|
||||||
)->assertJsonValidationErrors('name');
|
)->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
|
|
||||||
|
// allow UTF-8
|
||||||
|
option(['player_name_rule' => 'utf8']);
|
||||||
|
$this->postJson(route('user.player.add'), ['name' => '響け!ユーフォニアム'])
|
||||||
|
->assertJson(['code' => 0]);
|
||||||
|
$this->postJson(route('user.player.add'), ['name' => 'मूलपाठ'])
|
||||||
|
->assertJson(['code' => 0]);
|
||||||
|
|
||||||
// with an existed player name
|
// with an existed player name
|
||||||
option(['player_name_rule' => 'official']);
|
option(['player_name_rule' => 'official']);
|
||||||
$existed = Player::factory()->create();
|
$existed = Player::factory()->create();
|
||||||
$this->postJson(route('user.player.add'), ['name' => $existed->name])
|
$this->postJson(route('user.player.add'), ['name' => $existed->name])
|
||||||
->assertJsonValidationErrors('name');
|
->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
|
Event::fake();
|
||||||
|
$filter = Fakes\Filter::fake();
|
||||||
|
|
||||||
// Lack of score
|
// Lack of score
|
||||||
$user = User::factory()->create(['score' => 0]);
|
$user = User::factory()->create(['score' => 0]);
|
||||||
$this->actingAs($user)->postJson(
|
$this->actingAs($user)->postJson(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user