diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 440bd6de..cfd0172e 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -109,11 +109,15 @@ class ReportController extends Controller $report->texture->delete(); break; case 'ban': - if (auth()->user()->permission <= $report->informer->permission) { + $uploader = User::find($report->uploader); + if (! $uploader) { + return json(trans('admin.users.operations.non-existent'), 1); + } + if (auth()->user()->permission <= $uploader->permission) { return json(trans('admin.users.operations.no-permission'), 1); } - $report->informer->permission = User::BANNED; - $report->informer->save(); + $uploader->permission = User::BANNED; + $uploader->save(); break; } diff --git a/tests/ReportControllerTest.php b/tests/ReportControllerTest.php index 366bfbfa..edeba7a6 100644 --- a/tests/ReportControllerTest.php +++ b/tests/ReportControllerTest.php @@ -115,7 +115,8 @@ class ReportControllerTest extends TestCase public function testReview() { $uploader = factory(User::class)->create(); - $reporter = factory(User::class, 'admin')->create(); + $reporter = factory(User::class)->create(); + $admin = factory(User::class, 'admin')->create(); $texture = factory(Texture::class)->create(['uploader' => $uploader->uid]); $report = new Report; @@ -128,7 +129,7 @@ class ReportControllerTest extends TestCase $report->refresh(); // Without `id` field - $this->actingAs($reporter) + $this->actingAs($admin) ->postJson('/admin/reports') ->assertJsonValidationErrors('id'); @@ -200,9 +201,7 @@ class ReportControllerTest extends TestCase option(['reporter_reward_score' => 6]); $report->refresh(); $report->status = Report::PENDING; - $report->reporter = $uploader->uid; // I REPORT MYSELF. (我 举 报 我 自 己) $report->save(); - $reporter = $uploader; $score = $reporter->score; $this->postJson('/admin/reports', ['id' => $report->id, 'action' => 'ban']) ->assertJson([ @@ -211,6 +210,7 @@ class ReportControllerTest extends TestCase 'data' => ['status' => Report::RESOLVED], ]); $reporter->refresh(); + $uploader->refresh(); $this->assertEquals(User::BANNED, $uploader->permission); $this->assertEquals($score + 6, $reporter->score); option(['reporter_reward_score' => 0]);