Browse Source

Merge pull request #3391 from pixelfed/staging

Staging
daniel 3 years ago
parent
commit
d2191de1d6

+ 1 - 0
CHANGELOG.md

@@ -124,6 +124,7 @@
 - Updated ApiV1Controller, add missing pagination header. ([5649873a](https://github.com/pixelfed/pixelfed/commit/5649873a))
 - Updated CollectionController, limit unpublished collections to owner. ([a0061eb5](https://github.com/pixelfed/pixelfed/commit/a0061eb5))
 - Updated AP Inbox, fixes #3332. ([f8931dc7](https://github.com/pixelfed/pixelfed/commit/f8931dc7))
+- Updated AdminReportController, add account delete button. ([563817a9](https://github.com/pixelfed/pixelfed/commit/563817a9))
 -  ([](https://github.com/pixelfed/pixelfed/commit/))
 
 ## [v0.11.2 (2022-01-09)](https://github.com/pixelfed/pixelfed/compare/v0.11.1...v0.11.2)

+ 38 - 1
app/Http/Controllers/Admin/AdminReportController.php

@@ -22,6 +22,8 @@ use App\{
 };
 use Illuminate\Validation\Rule;
 use App\Services\StoryService;
+use App\Services\ModLogService;
+use App\Jobs\DeletePipeline\DeleteAccountPipeline;
 
 trait AdminReportController
 {
@@ -243,7 +245,7 @@ trait AdminReportController
 	public function updateSpam(Request $request, $id)
 	{
 		$this->validate($request, [
-			'action' => 'required|in:dismiss,approve,dismiss-all,approve-all'
+			'action' => 'required|in:dismiss,approve,dismiss-all,approve-all,delete-account'
 		]);
 
 		$action = $request->input('action');
@@ -257,6 +259,41 @@ trait AdminReportController
 		Cache::forget('admin-dash:reports:spam-count:total');
 		Cache::forget('admin-dash:reports:spam-count:30d');
 
+		if($action == 'delete-account') {
+			if(config('pixelfed.account_deletion') == false) {
+				abort(404);
+			}
+
+			$user = User::findOrFail($appeal->user_id);
+			$profile = $user->profile;
+
+			if($user->is_admin == true) {
+				$mid = $request->user()->id;
+				abort_if($user->id < $mid, 403);
+			}
+
+			$ts = now()->addMonth();
+			$user->status = 'delete';
+			$profile->status = 'delete';
+			$user->delete_after = $ts;
+			$profile->delete_after = $ts;
+			$user->save();
+			$profile->save();
+
+			ModLogService::boot()
+				->objectUid($user->id)
+				->objectId($user->id)
+				->objectType('App\User::class')
+				->user($request->user())
+				->action('admin.user.delete')
+				->accessLevel('admin')
+				->save();
+
+			Cache::forget('profiles:private');
+			DeleteAccountPipeline::dispatch($user)->onQueue('high');
+			return;
+		}
+
 		if($action == 'dismiss') {
 			$appeal->is_spam = true;
 			$appeal->appeal_handled_at = $now;

+ 8 - 1
resources/views/admin/reports/show_spam.blade.php

@@ -48,7 +48,8 @@
 		<button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn" data-action="approve">Mark as not spam</button>
 		<hr>
 		<button type="button" class="btn btn-default border btn-block font-weight-bold mb-3 action-btn" data-action="dismiss-all">Mark all as read</button>
-		<button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn mb-5" data-action="approve-all">Mark all as not spam</button>
+		<button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn" data-action="approve-all">Mark all as not spam</button>
+		<button type="button" class="btn btn-danger border btn-block font-weight-bold mb-3 action-btn mb-5" data-action="delete-account">Delete Account</button>
 		@endif
 		<div class="card shadow-none border">
 			<div class="card-header text-center font-weight-bold bg-light">
@@ -105,6 +106,12 @@
 					return;
 				}
 			break;
+
+			case 'delete-account':
+				if(!window.confirm('Are you sure you want to delete this account?')) {
+					return;
+				}
+			break;
 		}
 
 		axios.post(window.location.href, {