Merge pull request #4853 from Roardom/fix-group-cache

This commit is contained in:
HDVinnie
2025-07-19 08:34:22 -04:00
committed by GitHub
7 changed files with 23 additions and 33 deletions

View File

@@ -68,8 +68,6 @@ class CreateNewUser implements CreatesNewUsers
]
])->validate();
$validatingGroupId = cache()->rememberForever('group:validating:id', fn () => Group::query()->where('slug', '=', 'validating')->soleValue('id'));
$user = User::create([
'username' => $input['username'],
'email' => $input['email'],
@@ -78,7 +76,7 @@ class CreateNewUser implements CreatesNewUsers
'rsskey' => md5(random_bytes(60)),
'uploaded' => config('other.default_upload'),
'downloaded' => config('other.default_download'),
'group_id' => $validatingGroupId,
'group_id' => Group::query()->where('slug', '=', 'validating')->soleValue('id'),
]);
$user->passkeys()->create(['content' => $user->passkey]);

View File

@@ -44,11 +44,10 @@ class ResetUserPassword implements ResetsUserPasswords
'password' => Hash::make($input['password']),
]);
$validatingGroupId = cache()->rememberForever('group:validating:id', fn () => Group::query()->where('slug', '=', 'validating')->soleValue('id'));
$memberGroupId = cache()->rememberForever('group:user:id', fn () => Group::query()->where('slug', '=', 'user')->soleValue('id'));
$validatingGroupId = Group::query()->where('slug', '=', 'validating')->soleValue('id');
if ($user->group_id === $validatingGroupId) {
$user->group_id = $memberGroupId;
$user->group_id = Group::query()->where('slug', '=', 'user')->soleValue('id');
cache()->forget('user:'.$user->passkey);

View File

@@ -56,7 +56,7 @@ class AutoBanDisposableUsers extends Command
return;
}
$bannedGroupId = cache()->rememberForever('group:banned:id', fn () => Group::where('slug', '=', 'banned')->soleValue('id'));
$bannedGroupId = Group::where('slug', '=', 'banned')->soleValue('id');
User::where('group_id', '!=', $bannedGroupId)->chunkById(100, function ($users) use ($bannedGroupId): void {
foreach ($users as $user) {

View File

@@ -132,7 +132,8 @@ class RssController extends Controller
{
$user = $request->user();
$disabledGroupId = cache()->rememberForever('group:disabled:id', fn () => Group::where('slug', '=', 'disabled')->soleValue('id'));
// Redis returns ints as numeric strings!
$disabledGroupId = (int) cache()->rememberForever('group:disabled:id', fn () => Group::where('slug', '=', 'disabled')->soleValue('id'));
abort_if($user->group_id === $disabledGroupId, 404);

View File

@@ -30,7 +30,8 @@ class CheckIfBanned
public function handle(\Illuminate\Http\Request $request, Closure $next, ?string $guard = null): mixed
{
$user = $request->user();
$bannedGroupId = cache()->rememberForever('group:id:banned:id', fn () => Group::where('slug', '=', 'banned')->soleValue('id'));
// Redis returns ints as numeric strings!
$bannedGroupId = (int) cache()->rememberForever('group:banned:id', fn () => Group::where('slug', '=', 'banned')->soleValue('id'));
if ($user && $user->group_id === $bannedGroupId) {
if ($request->is('api/*')) {

View File

@@ -51,15 +51,12 @@ class FortifyServiceProvider extends ServiceProvider
$this->app->instance(LoginResponse::class, new class () implements LoginResponse {
public function toResponse($request): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$user = $request->user()->load('group:id,slug');
// Check if user is disabled
$disabledGroupId = cache()->rememberForever('group:disabled:id', fn () => Group::query()->where('slug', '=', 'disabled')->soleValue('id'));
$memberGroupId = cache()->rememberForever('group:user:id', fn () => Group::query()->where('slug', '=', 'user')->soleValue('id'));
if ($user->group_id == $disabledGroupId) {
$user->group_id = $memberGroupId;
$user->can_download = 1;
if ($user->group->slug === 'disabled') {
$user->group_id = Group::query()->where('slug', '=', 'user')->soleValue('id');
$user->can_download = true;
$user->disabled_at = null;
$user->save();
@@ -110,16 +107,12 @@ class FortifyServiceProvider extends ServiceProvider
$this->app->instance(VerifyEmailResponse::class, new class () implements VerifyEmailResponse {
public function toResponse($request): \Illuminate\Http\RedirectResponse|\Illuminate\View\View
{
$bannedGroupId = cache()->rememberForever('group:banned:id', fn () => Group::query()->where('slug', '=', 'banned')->soleValue('id'));
$validatingGroupId = cache()->rememberForever('group:validating:id', fn () => Group::query()->where('slug', '=', 'validating')->soleValue('id'));
$memberGroupId = cache()->rememberForever('group:user:id', fn () => Group::query()->where('slug', '=', 'user')->soleValue('id'));
$user = $request->user()->load('group:id,slug');
$user = $request->user();
if ($user->group_id !== $bannedGroupId) {
if ($user->group_id === $validatingGroupId) {
$user->can_download = 1;
$user->group_id = $memberGroupId;
if ($user->group->slug !== 'banned') {
if ($user->group->slug === 'validating') {
$user->can_download = true;
$user->group_id = Group::query()->where('slug', '=', 'user')->soleValue('id');
$user->save();
cache()->forget('user:'.$user->passkey);
@@ -207,10 +200,10 @@ class FortifyServiceProvider extends ServiceProvider
}
if ($password === true) {
// Check if user is activated
$validatingGroupId = cache()->rememberForever('group:validating:id', fn () => Group::query()->where('slug', '=', 'validating')->soleValue('id'));
$user->load('group:id,slug');
if ($user->email_verified_at === null || $user->group_id === $validatingGroupId) {
// Check if user is activated
if ($user->email_verified_at === null || $user->group->slug === 'validating') {
$request->session()->invalidate();
throw ValidationException::withMessages([
@@ -219,9 +212,7 @@ class FortifyServiceProvider extends ServiceProvider
}
// Check if user is banned
$bannedGroupId = cache()->rememberForever('group:banned:id', fn () => Group::query()->where('slug', '=', 'banned')->soleValue('id'));
if ($user->group_id === $bannedGroupId) {
if ($user->group->slug === 'banned') {
$request->session()->invalidate();
throw ValidationException::withMessages([

View File

@@ -799,13 +799,13 @@ parameters:
path: app/Providers/FortifyServiceProvider.php
-
message: '#^Method Laravel\\Fortify\\Contracts\\RegisterViewResponse@anonymous/app/Providers/FortifyServiceProvider\.php\:99\:\:toResponse\(\) never returns Illuminate\\Http\\RedirectResponse so it can be removed from the return type\.$#'
message: '#^Method Laravel\\Fortify\\Contracts\\RegisterViewResponse@anonymous/app/Providers/FortifyServiceProvider\.php\:96\:\:toResponse\(\) never returns Illuminate\\Http\\RedirectResponse so it can be removed from the return type\.$#'
identifier: return.unusedType
count: 1
path: app/Providers/FortifyServiceProvider.php
-
message: '#^Method Laravel\\Fortify\\Contracts\\VerifyEmailResponse@anonymous/app/Providers/FortifyServiceProvider\.php\:110\:\:toResponse\(\) never returns Illuminate\\View\\View so it can be removed from the return type\.$#'
message: '#^Method Laravel\\Fortify\\Contracts\\VerifyEmailResponse@anonymous/app/Providers/FortifyServiceProvider\.php\:107\:\:toResponse\(\) never returns Illuminate\\View\\View so it can be removed from the return type\.$#'
identifier: return.unusedType
count: 1
path: app/Providers/FortifyServiceProvider.php