You've already forked Atomcms-edit
Fix remaining issues: CDN config, min_staff_rank defaults, blade views
- Centralize all CDN URLs in config('habbo.cdn.*') with env overrides
- Replace hardcoded CDN URLs in 12+ blade views (fancybox, sweetalert2,
alpinejs, fontsource, fontawesome, html2canvas)
- Fix font-awesome 7.0.0 (non-existent) -> config with 6.7.0 default
- Centralize all hardcoded min_staff_rank defaults (3 and 7) to config
- Add MIN_STAFF_RANK and MIN_STAFF_RANK_LOGIN env variables
This commit is contained in:
@@ -113,7 +113,7 @@ class CreateNewUser implements CreatesNewUsers
|
|||||||
if (! empty($discordRanks)) {
|
if (! empty($discordRanks)) {
|
||||||
$shouldNotify = in_array($user->rank, $discordRanks);
|
$shouldNotify = in_array($user->rank, $discordRanks);
|
||||||
} else {
|
} else {
|
||||||
$minStaffRank = (int) setting('min_staff_rank', 3);
|
$minStaffRank = (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank_login'));
|
||||||
$shouldNotify = $user->rank >= $minStaffRank;
|
$shouldNotify = $user->rank >= $minStaffRank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class FurniEditorController extends Controller
|
|||||||
{
|
{
|
||||||
private function checkAdmin(): void
|
private function checkAdmin(): void
|
||||||
{
|
{
|
||||||
if (! Auth::check() || Auth::user()->rank < (int) setting('min_staff_rank', 7)) {
|
if (! Auth::check() || Auth::user()->rank < (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank'))) {
|
||||||
abort(403, 'Forbidden');
|
abort(403, 'Forbidden');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class AdminSecurityMiddleware
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check 2: Must have admin rank
|
// Check 2: Must have admin rank
|
||||||
$minRank = (int) setting('min_staff_rank', 7);
|
$minRank = (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank'));
|
||||||
if ($user->rank < $minRank) {
|
if ($user->rank < $minRank) {
|
||||||
Log::warning('[Security] Unauthorized API access attempt', [
|
Log::warning('[Security] Unauthorized API access attempt', [
|
||||||
'user_id' => $user->id,
|
'user_id' => $user->id,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class ForceStaffTwoFactorMiddleware
|
|||||||
'two-factor.verify',
|
'two-factor.verify',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (($user->rank >= setting('min_staff_rank') && ! $user->two_factor_confirmed) && ! in_array(request()->route()?->getName(), $allowedRoutes)) {
|
if (($user->rank >= setting('min_staff_rank', config('habbo.defaults.min_staff_rank')) && ! $user->two_factor_confirmed) && ! in_array(request()->route()?->getName(), $allowedRoutes)) {
|
||||||
return to_route('settings.two-factor');
|
return to_route('settings.two-factor');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class LogStaffActivity
|
|||||||
|
|
||||||
public function terminate(Request $request, Response $response): void
|
public function terminate(Request $request, Response $response): void
|
||||||
{
|
{
|
||||||
if (auth()->check() && auth()->user()->rank >= (int) setting('min_staff_rank', 3)) {
|
if (auth()->check() && auth()->user()->rank >= (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank_login'))) {
|
||||||
$this->logRequest($request);
|
$this->logRequest($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class LogStaffLogin
|
|||||||
public function handle(Login $event): void
|
public function handle(Login $event): void
|
||||||
{
|
{
|
||||||
$user = $event->user;
|
$user = $event->user;
|
||||||
$minStaffRank = (int) setting('min_staff_rank', 3);
|
$minStaffRank = (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank_login'));
|
||||||
|
|
||||||
if ($user && $user->rank >= $minStaffRank) {
|
if ($user && $user->rank >= $minStaffRank) {
|
||||||
StaffActivity::logLogin($user->id);
|
StaffActivity::logLogin($user->id);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ readonly class StaffService
|
|||||||
return Cache::get('staff_positions');
|
return Cache::get('staff_positions');
|
||||||
}
|
}
|
||||||
|
|
||||||
$minStaffRank = (int) setting('min_staff_rank', 3);
|
$minStaffRank = (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank_login'));
|
||||||
$minRankToSeeHidden = (int) setting('min_rank_to_see_hidden_staff', 7);
|
$minRankToSeeHidden = (int) setting('min_rank_to_see_hidden_staff', 7);
|
||||||
$userRank = Auth::check() ? Auth::user()->rank : 0;
|
$userRank = Auth::check() ? Auth::user()->rank : 0;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ readonly class StaffService
|
|||||||
return Cache::get('staff_ids');
|
return Cache::get('staff_ids');
|
||||||
}
|
}
|
||||||
|
|
||||||
$minRank = (int) setting('min_staff_rank', 3);
|
$minRank = (int) setting('min_staff_rank', config('habbo.defaults.min_staff_rank_login'));
|
||||||
|
|
||||||
$staffIds = User::query()->select('id')
|
$staffIds = User::query()->select('id')
|
||||||
->where('rank', '>=', $minRank)
|
->where('rank', '>=', $minRank)
|
||||||
|
|||||||
@@ -56,6 +56,18 @@ return [
|
|||||||
|
|
||||||
'defaults' => [
|
'defaults' => [
|
||||||
'avatar_look' => env('DEFAULT_AVATAR_LOOK', 'hr-100-61.hd-180-1.ch-210-66'),
|
'avatar_look' => env('DEFAULT_AVATAR_LOOK', 'hr-100-61.hd-180-1.ch-210-66'),
|
||||||
|
'min_staff_rank' => env('MIN_STAFF_RANK', 7),
|
||||||
|
'min_staff_rank_login' => env('MIN_STAFF_RANK_LOGIN', 3),
|
||||||
|
],
|
||||||
|
|
||||||
|
'cdn' => [
|
||||||
|
'fancybox_js' => env('FANCYBOX_JS_URL', 'https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js'),
|
||||||
|
'fancybox_css' => env('FANCYBOX_CSS_URL', 'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css'),
|
||||||
|
'sweetalert2_js' => env('SWEETALERT2_JS_URL', '//cdn.jsdelivr.net/npm/sweetalert2@11'),
|
||||||
|
'alpine_js' => env('ALPINE_JS_URL', 'https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js'),
|
||||||
|
'fontsource_inter_css' => env('FONTSOURCE_INTER_CSS_URL', 'https://cdn.jsdelivr.net/npm/@fontsource/inter@4.x/400-700.css'),
|
||||||
|
'fontawesome_css' => env('FONTAWESOME_CSS_URL', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css'),
|
||||||
|
'html2canvas_js' => env('HTML2CANVAS_JS_URL', 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js'),
|
||||||
],
|
],
|
||||||
|
|
||||||
'findretros' => [
|
'findretros' => [
|
||||||
|
|||||||
@@ -35,8 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@push('javascript')
|
@push('javascript')
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
|
<script src="{{ config('habbo.cdn.fancybox_js') }}"></script>
|
||||||
@endpush
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fancybox_css') }}" />
|
||||||
</x-app-layout>
|
</x-app-layout>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
<script src="{{ config('habbo.cdn.sweetalert2_js') }}"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var Toast = Swal.mixin({
|
var Toast = Swal.mixin({
|
||||||
|
|||||||
@@ -344,7 +344,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</x-content.content-card>
|
</x-content.content-card>
|
||||||
</div>
|
</div>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha512-DxV+EoADOkOygM4IR9yXP8Sb2qwgidEmeqAEmDKIOfPRQZOWbXCzLC6vjbZyy0vPisbH2SyW27+ddLVCN+OMzQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fontawesome_css') }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
<script src="{{ asset('js/gif/gif.js') }}"></script>
|
<script src="{{ asset('js/gif/gif.js') }}"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -39,8 +39,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@push('javascript')
|
@push('javascript')
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
|
<script src="{{ config('habbo.cdn.fancybox_js') }}"></script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fancybox_css') }}" />
|
||||||
</x-app-layout>
|
</x-app-layout>
|
||||||
@@ -73,8 +73,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- TODO: Selfhost --}}
|
{{-- TODO: Selfhost --}}
|
||||||
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
<script src="{{ config('habbo.cdn.sweetalert2_js') }}"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
|
<script src="{{ config('habbo.cdn.html2canvas_js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
function logoGenerator() {
|
function logoGenerator() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -183,6 +183,6 @@
|
|||||||
usernameInput.addEventListener('keyup', updateAvatar);
|
usernameInput.addEventListener('keyup', updateAvatar);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
|
<script src="{{ config('habbo.cdn.fancybox_js') }}"></script>
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fancybox_css') }}" />
|
||||||
</x-app-layout>
|
</x-app-layout>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
<script src="{{ config('habbo.cdn.sweetalert2_js') }}"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var Toast = Swal.mixin({
|
var Toast = Swal.mixin({
|
||||||
|
|||||||
@@ -135,7 +135,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</x-content.content-card>
|
</x-content.content-card>
|
||||||
</div>
|
</div>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha512-DxV+EoADOkOygM4IR9yXP8Sb2qwgidEmeqAEmDKIOfPRQZOWbXCzLC6vjbZyy0vPisbH2SyW27+ddLVCN+OMzQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fontawesome_css') }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
<script src="{{ asset('js/gif/gif.js') }}"></script>
|
<script src="{{ asset('js/gif/gif.js') }}"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -128,9 +128,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<x-footer />
|
<x-footer />
|
||||||
|
<script src="{{ config('habbo.cdn.fancybox_js') }}"></script>
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fancybox_css') }}" />
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
|
|
||||||
|
|
||||||
@stack('javascript')
|
@stack('javascript')
|
||||||
|
|
||||||
|
|||||||
@@ -73,8 +73,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- TODO: Selfhost --}}
|
{{-- TODO: Selfhost --}}
|
||||||
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
<script src="{{ config('habbo.cdn.sweetalert2_js') }}"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
|
<script src="{{ config('habbo.cdn.html2canvas_js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
function logoGenerator() {
|
function logoGenerator() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@section('title', __('radio.music') . ' - ' . config('app.name'))
|
@section('title', __('radio.music') . ' - ' . config('app.name'))
|
||||||
|
|
||||||
@push('styles')
|
@push('styles')
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource/inter@4.x/400-700.css">
|
<link rel="stylesheet" href="{{ config('habbo.cdn.fontsource_inter_css') }}">
|
||||||
<style>
|
<style>
|
||||||
:root {
|
:root {
|
||||||
--radio-primary: {{ $primaryColor ?? '#eeb425' }};
|
--radio-primary: {{ $primaryColor ?? '#eeb425' }};
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Radio Player</title>
|
<title>Radio Player</title>
|
||||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
<script defer src="{{ config('habbo.cdn.alpine_js') }}"></script>
|
||||||
<style>
|
<style>
|
||||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
body {
|
body {
|
||||||
|
|||||||
Reference in New Issue
Block a user