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,
|
Filter $filter,
|
||||||
Player $player
|
Player $player
|
||||||
) {
|
) {
|
||||||
|
/** @var User */
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
foreach (['skin', 'cape'] as $type) {
|
foreach (['skin', 'cape'] as $type) {
|
||||||
$tid = $request->input($type);
|
$tid = $request->input($type);
|
||||||
|
|
||||||
|
|
@ -206,10 +209,14 @@ class PlayerController extends Controller
|
||||||
|
|
||||||
if ($tid) {
|
if ($tid) {
|
||||||
$texture = Texture::find($tid);
|
$texture = Texture::find($tid);
|
||||||
if (!$texture) {
|
if (empty($texture)) {
|
||||||
return json(trans('skinlib.non-existent'), 1);
|
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]);
|
$dispatcher->dispatch('player.texture.updating', [$player, $texture]);
|
||||||
|
|
||||||
$field = "tid_$type";
|
$field = "tid_$type";
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,4 @@
|
||||||
- Fixed duplication of private textures.
|
- Fixed duplication of private textures.
|
||||||
- Fixed that previews and avatars cannot be indivdually cached by image format.
|
- 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 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 状态码相符的问题
|
- 修复针对私有材质的错误消息不与 HTTP 状态码相符的问题
|
||||||
|
- 修复应用材质到角色时未检查材质是否在衣柜中的问题
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ class PlayerControllerTest extends TestCase
|
||||||
$player = factory(Player::class)->create();
|
$player = factory(Player::class)->create();
|
||||||
$user = $player->user;
|
$user = $player->user;
|
||||||
$skin = factory(Texture::class)->create();
|
$skin = factory(Texture::class)->create();
|
||||||
$cape = factory(Texture::class)->states('cape')->create();
|
$cape = factory(Texture::class)->state('cape')->create();
|
||||||
|
|
||||||
// rejected
|
// rejected
|
||||||
$filter = Fakes\Filter::fake();
|
$filter = Fakes\Filter::fake();
|
||||||
|
|
@ -333,15 +333,26 @@ class PlayerControllerTest extends TestCase
|
||||||
->assertJson(['code' => 1, 'message' => 'rejected']);
|
->assertJson(['code' => 1, 'message' => 'rejected']);
|
||||||
$filter->remove('can_set_texture');
|
$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])
|
$this->putJson(route('user.player.set', ['player' => $player]), ['skin' => -1])
|
||||||
->assertJson([
|
->assertJson([
|
||||||
'code' => 1,
|
'code' => 1,
|
||||||
'message' => trans('skinlib.non-existent'),
|
'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();
|
Event::fake();
|
||||||
|
$user->closet()->attach($skin->tid, ['item_name' => $skin->name]);
|
||||||
$this->putJson(
|
$this->putJson(
|
||||||
route('user.player.set', ['player' => $player]),
|
route('user.player.set', ['player' => $player]),
|
||||||
['skin' => $skin->tid]
|
['skin' => $skin->tid]
|
||||||
|
|
@ -370,8 +381,9 @@ class PlayerControllerTest extends TestCase
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// Set for "cape" type
|
// set for "cape" type
|
||||||
Event::fake();
|
Event::fake();
|
||||||
|
$user->closet()->attach($cape->tid, ['item_name' => $cape->name]);
|
||||||
$this->putJson(
|
$this->putJson(
|
||||||
route('user.player.set', ['player' => $player]),
|
route('user.player.set', ['player' => $player]),
|
||||||
['cape' => $cape->tid]
|
['cape' => $cape->tid]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user