🆙 More fixes 🆙

This commit is contained in:
Remco
2026-01-19 20:43:46 +01:00
parent deed2158ca
commit 7b9849c159
77 changed files with 1084 additions and 13612 deletions
@@ -18,12 +18,15 @@ class AccountSettingsController extends Controller
private readonly SessionService $sessionService,
private readonly UserService $userService,
private readonly RconService $rconService
): void {}
) {}
public function edit(): View
{
/** @var \App\Models\User $user */
$user = Auth::user();
return view('user.settings.account', [
'user' => Auth::user()->load('settings:allow_name_change'),
'user' => $user->load('settings:allow_name_change'),
]);
}
@@ -46,7 +49,7 @@ class AccountSettingsController extends Controller
// $allowedNameChange = $user->settings?->allow_name_change && $user->username !== $request->input('username');
if (! $this->rconService->isConnected() && Auth::user()->online === '1') {
if (! $this->rconService->isConnected() && $user->online) {
return back()->withErrors('You must be offline to change your account settings');
}
@@ -55,12 +58,12 @@ class AccountSettingsController extends Controller
$this->userService->updateField($user, 'username', $request->input('username'));
} **/
if ($user->mail !== $request->input('mail')) {
$this->userService->updateField($user, 'mail', $request->input('mail'));
$this->userService->updateField($user, 'mail', $request->string('mail')->toString());
}
if ($user->motto !== $request->input('motto')) {
$this->rconService->setMotto($user, $request->input('motto'));
$this->userService->updateField($user, 'motto', $request->input('motto'));
$this->rconService->setMotto($user, $request->string('motto')->toString());
$this->userService->updateField($user, 'motto', $request->string('motto')->toString());
}
return to_route('settings.account.show')->with('success', __('Your account settings has been updated'));
@@ -16,8 +16,11 @@ class BannedController extends Controller
->orderByDesc('id')
->first();
/** @var \App\Models\User $user */
$user = Auth::user();
return view('banned', [
'ban' => $ipBan ?? Auth::user()->ban,
'ban' => $ipBan ?? $user->ban,
]);
}
}
@@ -32,8 +32,8 @@ class ForgotPasswordController extends Controller
'token' => $token,
]);
Mail::send('email.forgetPassword', ['token' => $token], function ($message) use ($request): void {
$message->to($request->mail);
Mail::send('email.forgetPassword', ['token' => $token], function (\Illuminate\Mail\Message $message) use ($request): void {
$message->to($request->string('mail')->toString());
$message->subject('Reset Password');
});
}
@@ -47,7 +47,12 @@ class ForgotPasswordController extends Controller
if ($prt === null) {
return to_route('forgot.password.get')->withErrors('message', __('This token has expired!'));
}
$tokenExpiration = \Illuminate\Support\Facades\Date::now()->subMinutes(config('habbo.password_reset_token_time'));
$resetTime = config('habbo.password_reset_token_time');
if (! is_numeric($resetTime)) {
$resetTime = 60;
}
$tokenExpiration = \Illuminate\Support\Facades\Date::now()->subMinutes((int) $resetTime);
if ($prt->created_at->gte($tokenExpiration)) {
$prt->delete();
@@ -66,12 +71,14 @@ class ForgotPasswordController extends Controller
'password_confirmation' => ['required'],
]);
$prt = PasswordResetToken::select('email', 'token')->where('token', $token)->first();
if ($prt === null) {
$prt = PasswordResetToken::with('user')->select('email', 'token')->where('token', $token)->first();
if ($prt === null || $prt->user === null) {
return to_route('forgot.password.get')->withErrors('message', __('This token has expired!'));
}
$prt->user->changePassword($request->password);
/** @var \App\Models\User $user */
$user = $prt->user;
$user->changePassword($request->string('password')->toString());
$prt->delete();
return to_route('login')->with('success', __('Your password has been successfully reset!'));
@@ -28,7 +28,16 @@ class GuestbookController extends Controller
public function destroy(User $user, WebsiteUserGuestbook $guestbook): RedirectResponse
{
if ($guestbook->user_id !== Auth::id() && $guestbook->profile_id !== $user->id && Auth::user()->rank < (int) setting('min_staff_rank')) {
/** @var \App\Models\User|null $currentUser */
$currentUser = Auth::user();
if ($currentUser === null) {
return back()->withErrors([
'message' => __('You must be logged in.'),
]);
}
if ($guestbook->user_id !== $currentUser->id && $guestbook->profile_id !== $user->id && $currentUser->rank < (int) setting('min_staff_rank')) {
return back()->withErrors([
'message' => __('Do do not have permission to delete this message'),
]);
@@ -41,12 +50,19 @@ class GuestbookController extends Controller
private function validateGuestbookPost(User $user, GuestbookFormRequest $request): ?RedirectResponse
{
if ($user->id === $request->user()->id) {
/** @var \App\Models\User|null $currentUser */
$currentUser = $request->user();
if ($currentUser === null) {
return $this->redirectWithError(__('You must be logged in.'));
}
if ($user->id === $currentUser->id) {
return $this->redirectWithError(__('You cannot post a message on your own profile.'));
}
$maxAllowedPostCount = in_array(setting('max_guestbook_posts_per_profile'), ['', '0'], true) ? 3 : (int) setting('max_guestbook_posts_per_profile');
if ($user->profileGuestbook()->where('user_id', $request->user()->id)->count() >= $maxAllowedPostCount) {
$maxAllowedPostCount = in_array((string) setting('max_guestbook_posts_per_profile'), ['', '0'], true) ? 3 : (int) setting('max_guestbook_posts_per_profile');
if ($user->profileGuestbook()->where('user_id', $currentUser->id)->count() >= $maxAllowedPostCount) {
return $this->redirectWithError(__('You have already posted :count messages on this profile.', ['count' => $maxAllowedPostCount]));
}
@@ -11,10 +11,12 @@ class MeController extends Controller
{
public function __invoke(): View
{
/** @var \App\Models\User $user */
$user = Auth::user();
return view('user.me', [
'onlineFriends' => Auth::user()?->getOnlineFriends(),
'user' => Auth::user()?->load('permission:id,rank_name'),
'onlineFriends' => $user->getOnlineFriends(),
'user' => $user->load('permission:id,rank_name'),
'articles' => WebsiteArticle::whereHas('user')->with('user:id,username,look')->latest()->take(5)->get(),
]);
}
@@ -18,8 +18,11 @@ class PasswordSettingsController extends Controller
public function update(PasswordSettingsFormRequest $request): RedirectResponse
{
Auth::user()->update([
'password' => Hash::make($request->input('password')),
/** @var \App\Models\User $user */
$user = Auth::user();
$user->update([
'password' => Hash::make($request->string('password')->toString()),
]);
return to_route('settings.password.show')->with('success', __('Your password has been changed!'));
@@ -8,6 +8,7 @@ use App\Models\Game\Player\MessengerFriendship;
use App\Models\User;
use Illuminate\Contracts\View\View;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\HasMany;
class ProfileController extends Controller
{
@@ -30,12 +31,12 @@ class ProfileController extends Controller
private function loadUserRelations(User $user): User
{
return $user->load([
'badges' => function ($badges): void {
'badges' => function (HasMany $badges): void {
$badges->where('slot_id', '>', '0')
->orderBy('slot_id')
->take(5);
},
'rooms' => function ($rooms): void {
'rooms' => function (HasMany $rooms): void {
$rooms->select('id', 'owner_id', 'name', 'users')
->orderByDesc('users')
->orderBy('id');
@@ -43,6 +44,9 @@ class ProfileController extends Controller
]);
}
/**
* @return Collection<int, MessengerFriendship>
*/
private function getUserFriends(int $userId): Collection
{
return MessengerFriendship::select('user_two_id')
@@ -54,6 +58,9 @@ class ProfileController extends Controller
->get();
}
/**
* @return Collection<int, GuildMember>
*/
private function getUserGroups(int $userId): Collection
{
return GuildMember::query()
@@ -11,17 +11,22 @@ class ReferralController extends Controller
{
public function __invoke(RconService $rcon): RedirectResponse
{
/** @var \App\Models\User $user */
$user = Auth::user();
if (! $user->referrals || $user->referrals->referrals_total < setting('referrals_needed')) {
/** @var \App\Models\User\UserReferral|null $referrals */
$referrals = $user->referrals;
if ($referrals === null || $referrals->referrals_total < (int) setting('referrals_needed')) {
return back()->withErrors([
'message' => __('You do not have enough referrals to claim your reward'),
]);
}
// Decrease the total amount of referrals with the amount needed to claim reward
$user->referrals->decrement('referrals_total', setting('referrals_needed'));
$referrals->decrement('referrals_total', (int) setting('referrals_needed'));
$rcon->giveDiamonds($user, setting('referral_reward_amount'));
$rcon->giveDiamonds($user, (int) setting('referral_reward_amount'));
// Log the claim
$user->claimedReferralLog()->create([
@@ -25,7 +25,10 @@ class TwoFactorAuthenticationController extends Controller
public function verify(Request $request): RedirectResponse
{
$confirmed = $request->user()->confirmTwoFactorAuthentication($request->input('code'));
/** @var \App\Models\User $user */
$user = $request->user();
$confirmed = $user->confirmTwoFactorAuthentication($request->string('code')->toString());
if (! $confirmed) {
return back()->withErrors('Invalid Two Factor Authentication code');
}