Add user roles system

This commit is contained in:
2026-01-16 23:14:47 +01:00
parent c0be2e294a
commit e5ef197ed6
21 changed files with 206 additions and 85 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Admin;
use App\Enums\UserRole;
use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -31,11 +32,11 @@ class UserController extends Controller
switch ($validated['action']) {
case 'ban':
$user->update(['is_banned' => 1]);
$user->addRole(UserRole::BANNED);
alert()->success('Banned', 'User has been banned.');
break;
case 'unban':
$user->update(['is_banned' => 0]);
$user->removeRole(UserRole::BANNED);
alert()->success('Unbanned', 'User has been unbanned.');
break;
default:

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Auth;
use App\Enums\UserRole;
use App\Models\User;
use App\Http\Controllers\Controller;
@@ -88,10 +89,7 @@ class DiscordAuthController extends Controller
// User is not in the guild
if ($response->status() === 404) {
$user->update([
'is_patreon' => false,
]);
$user->removeRole(UserRole::SUPPORTER);
return;
}
@@ -110,21 +108,15 @@ class DiscordAuthController extends Controller
$discordRoles = $response->json('roles', []);
$patreonRoles = config('discord.patreon_roles', []);
$isPatreon = false;
foreach($patreonRoles as $patreonRole)
{
if (in_array($patreonRole, $discordRoles, true)) {
$isPatreon = true;
break;
}
// If intersect of array is empty, then the user doesn't have the role
$hasSupporterRole = !empty(array_intersect($discordRoles, $patreonRoles));
if (!$hasSupporterRole) {
// Remove role if not found
$user->removeRole(UserRole::SUPPORTER);
return;
}
// Only update if something actually changed
if ($user->is_patreon !== $isPatreon) {
$user->update([
'is_patreon' => $isPatreon,
]);
}
$user->addRole(UserRole::SUPPORTER);
}
}