Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions cncnet-api/app/Http/Controllers/AccountController.php
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,35 @@ public function getNewVerification(Request $request)
return view('auth.verify');
}

public function deleteAccount(Request $request)
{

$user = $request->user();

if (!$request->has('confirm_delete'))
{
return redirect()->back()->with('error', 'Please confirm account deletion.');
}

DB::transaction(function () use ($user)
{
$user->userSettings()->delete();

// Anonymize the user
$user->name = 'Deleted User';
$user->email = uniqid('deleted_user_') . '@example.com'; // Replace email with a unique placeholder
$user->password = null; // Remove password
$user->email_verified = false;
$user->save();

// Delete the user record
$user->delete();
});

auth()->logout();
return redirect('/goodbye')->with('status', 'Your account has been deleted.');
}

public function createNewVerification(Request $request)
{
$user = $request->user();
Expand Down
2 changes: 1 addition & 1 deletion cncnet-api/app/Http/Controllers/LadderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ public function getLadderPlayer(Request $request, $date = null, $cncnetGame = nu
$recentAchievements = $this->achievementService->getRecentlyUnlockedAchievements($history, $user, 3);
$achievementProgressCounts = $this->achievementService->getProgressCountsByUser($history, $user);

$isAnonymous = $player->user->userSettings->enableAnonymous;
$isAnonymous = $player?->user?->userSettings?->enableAnonymous;

$ladderNicks = [];
if (!$isAnonymous)
Expand Down
29 changes: 29 additions & 0 deletions cncnet-api/resources/views/auth/account-settings-nav.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,32 @@
<a href="/account/settings" class="btn btn-outline-primary {{ request()->is('account/settings') ? 'btn-outline-secondary ' : '' }}">
Ladder Account Settings
</a>

<div>
<button type="button" class="btn btn-secondary btn-size-md me-3" data-bs-toggle="modal" data-bs-target="#deleteAccount">
Delete Your Account
</button>

<div class="modal fade" id="deleteAccount" tabIndex="-1" role="dialog" aria-labelledby="deleteAccountLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteAccountLabel">Are you sure?</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Deleting your account is permanent and cannot be undone. Are you sure you want to proceed?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>

<form action="/delete" method="POST" style="display: inline;">
@csrf
<input type="hidden" name="confirm_delete" value="true">
<button type="submit" class="btn btn-danger">Delete Account</button>
</form>
</div>
</div>
</div>
</div>
</div>
1 change: 1 addition & 0 deletions cncnet-api/routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,5 @@
Route::get('/verify/{verify_token}', [\App\Http\Controllers\AccountController::class, 'verifyEmail']);
Route::get('/settings', [\App\Http\Controllers\AccountController::class, 'getUserSettings']);
Route::post('/settings', [\App\Http\Controllers\AccountController::class, 'updateUserSettings']);
Route::post('/delete', [\App\Http\Controllers\AccountController::class, 'deleteAccount']);
});