fix that texture isn't checked if it's existed in closet
when being applied to player
This commit is contained in:
parent
3f717e1d1e
commit
bf860d6a68
|
|
@ -196,6 +196,9 @@ class PlayerController extends Controller
|
|||
Filter $filter,
|
||||
Player $player
|
||||
) {
|
||||
/** @var User */
|
||||
$user = auth()->user();
|
||||
|
||||
foreach (['skin', 'cape'] as $type) {
|
||||
$tid = $request->input($type);
|
||||
|
||||
|
|
@ -206,10 +209,14 @@ class PlayerController extends Controller
|
|||
|
||||
if ($tid) {
|
||||
$texture = Texture::find($tid);
|
||||
if (!$texture) {
|
||||
if (empty($texture)) {
|
||||
return json(trans('skinlib.non-existent'), 1);
|
||||
}
|
||||
|
||||
if ($user->closet()->where('texture_tid', $tid)->doesntExist()) {
|
||||
return json(trans('user.closet.remove.non-existent'), 1);
|
||||
}
|
||||
|
||||
$dispatcher->dispatch('player.texture.updating', [$player, $texture]);
|
||||
|
||||
$field = "tid_$type";
|
||||
|
|
|
|||
|
|
@ -12,3 +12,4 @@
|
|||
- Fixed duplication of private textures.
|
||||
- Fixed that previews and avatars cannot be indivdually cached by image format.
|
||||
- Fixed that message for private textures doesn't match with HTTP status code.
|
||||
- Fixed that texture isn't checked if it's existed in closet when being applied to player.
|
||||
|
|
|
|||
|
|
@ -12,3 +12,4 @@
|
|||
- 修复私有材质的重复问题
|
||||
- 修复预览图和头像不能根据图像格式来单独缓存的问题
|
||||
- 修复针对私有材质的错误消息不与 HTTP 状态码相符的问题
|
||||
- 修复应用材质到角色时未检查材质是否在衣柜中的问题
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ class PlayerControllerTest extends TestCase
|
|||
$player = factory(Player::class)->create();
|
||||
$user = $player->user;
|
||||
$skin = factory(Texture::class)->create();
|
||||
$cape = factory(Texture::class)->states('cape')->create();
|
||||
$cape = factory(Texture::class)->state('cape')->create();
|
||||
|
||||
// rejected
|
||||
$filter = Fakes\Filter::fake();
|
||||
|
|
@ -333,15 +333,26 @@ class PlayerControllerTest extends TestCase
|
|||
->assertJson(['code' => 1, 'message' => 'rejected']);
|
||||
$filter->remove('can_set_texture');
|
||||
|
||||
// Set a not-existed texture
|
||||
// set a not-existed texture
|
||||
$this->putJson(route('user.player.set', ['player' => $player]), ['skin' => -1])
|
||||
->assertJson([
|
||||
'code' => 1,
|
||||
'message' => trans('skinlib.non-existent'),
|
||||
]);
|
||||
|
||||
// Set for "skin" type
|
||||
// set a private texture
|
||||
$private = factory(Texture::class)->state('private')->create();
|
||||
$this->putJson(
|
||||
route('user.player.set', ['player' => $player]),
|
||||
['skin' => $private->tid]
|
||||
)->assertJson([
|
||||
'code' => 1,
|
||||
'message' => trans('user.closet.remove.non-existent'),
|
||||
]);
|
||||
|
||||
// set for "skin" type
|
||||
Event::fake();
|
||||
$user->closet()->attach($skin->tid, ['item_name' => $skin->name]);
|
||||
$this->putJson(
|
||||
route('user.player.set', ['player' => $player]),
|
||||
['skin' => $skin->tid]
|
||||
|
|
@ -370,8 +381,9 @@ class PlayerControllerTest extends TestCase
|
|||
}
|
||||
);
|
||||
|
||||
// Set for "cape" type
|
||||
// set for "cape" type
|
||||
Event::fake();
|
||||
$user->closet()->attach($cape->tid, ['item_name' => $cape->name]);
|
||||
$this->putJson(
|
||||
route('user.player.set', ['player' => $player]),
|
||||
['cape' => $cape->tid]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user