mirror of
https://github.com/bs-community/blessing-skin-server.git
synced 2025-03-01 15:05:39 +08:00
Fix validating player name
This commit is contained in:
parent
2d73124fed
commit
35c07cdb63
@ -13,7 +13,7 @@ class PlayerName implements Rule
|
||||
switch (option('player_name_rule')) {
|
||||
case 'official':
|
||||
// Mojang's official username rule
|
||||
$regexp = '/^[A-Za-z0-9_§]+$/';
|
||||
$regexp = '/^[A-Za-z0-9_]+$/';
|
||||
break;
|
||||
|
||||
case 'cjk':
|
||||
@ -26,7 +26,7 @@ class PlayerName implements Rule
|
||||
break;
|
||||
}
|
||||
|
||||
return preg_match($regexp, $value);
|
||||
return (bool) preg_match($regexp, $value);
|
||||
}
|
||||
|
||||
public function message()
|
||||
|
@ -16,7 +16,7 @@
|
||||
- Added badges at texture detail page.
|
||||
- Added FAQ link at error page.
|
||||
- Added login with 3rd-party services. (GitHub and Microsoft Live are supported currently.)
|
||||
- Added support of character "§" for player name.
|
||||
- Added support of character "§" for player name. (Under CJK mode.)
|
||||
|
||||
## Tweaked
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
- 在材质详情页中显示上传者的 badge
|
||||
- 在错误页面增加指向 FAQ 页面的链接
|
||||
- 第三方登录(目前仅支持 GitHub 和 Microsoft Live)
|
||||
- 角色名支持字符「§」
|
||||
- 角色名支持字符「§」(需开启「CJK」模式)
|
||||
|
||||
## 调整
|
||||
|
||||
|
67
tests/RulesTest/PlayerNameTest.php
Normal file
67
tests/RulesTest/PlayerNameTest.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace Tests;
|
||||
|
||||
use App\Rules\PlayerName;
|
||||
|
||||
class PlayerNameTest extends TestCase
|
||||
{
|
||||
public function testOfficialRule()
|
||||
{
|
||||
$rule = new PlayerName();
|
||||
|
||||
$this->assertTrue($rule->passes('', '_name_'));
|
||||
$this->assertTrue($rule->passes('', 'NaN'));
|
||||
|
||||
$this->assertFalse($rule->passes('', '中文'));
|
||||
$this->assertFalse($rule->passes('', '§Me'));
|
||||
$this->assertFalse($rule->passes('', ';'));
|
||||
$this->assertFalse($rule->passes('', '\\'));
|
||||
|
||||
$this->assertEquals(
|
||||
trans('user.player.player-name-rule.official'),
|
||||
$rule->message()
|
||||
);
|
||||
}
|
||||
|
||||
public function testCJK()
|
||||
{
|
||||
option(['player_name_rule' => 'cjk']);
|
||||
$rule = new PlayerName();
|
||||
|
||||
$this->assertTrue($rule->passes('', '_name_'));
|
||||
$this->assertTrue($rule->passes('', 'NaN'));
|
||||
$this->assertTrue($rule->passes('', '中文'));
|
||||
$this->assertTrue($rule->passes('', '§Me'));
|
||||
|
||||
$this->assertFalse($rule->passes('', ';'));
|
||||
$this->assertFalse($rule->passes('', '\\'));
|
||||
|
||||
$this->assertEquals(
|
||||
trans('user.player.player-name-rule.cjk'),
|
||||
$rule->message()
|
||||
);
|
||||
}
|
||||
|
||||
public function testCustom()
|
||||
{
|
||||
option(['player_name_rule' => 'custom']);
|
||||
$rule = new PlayerName();
|
||||
|
||||
$this->assertTrue($rule->passes('', '_name_'));
|
||||
$this->assertTrue($rule->passes('', 'NaN'));
|
||||
$this->assertTrue($rule->passes('', '中文'));
|
||||
$this->assertTrue($rule->passes('', '§Me'));
|
||||
$this->assertTrue($rule->passes('', ';'));
|
||||
$this->assertTrue($rule->passes('', '\\'));
|
||||
|
||||
option(['custom_player_name_regexp' => '/[ab]/']);
|
||||
$this->assertTrue($rule->passes('', 'a'));
|
||||
$this->assertFalse($rule->passes('', 'c'));
|
||||
|
||||
$this->assertEquals(
|
||||
trans('user.player.player-name-rule.custom'),
|
||||
$rule->message()
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user