diff --git a/bootstrap/providers.php b/bootstrap/providers.php index ffc860cbb..37cec7766 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -3,7 +3,8 @@ return [ App\Providers\AppServiceProvider::class, App\Providers\HorizonServiceProvider::class, - App\Providers\TelescopeServiceProvider::class, App\Providers\RouteServiceProvider::class, + App\Providers\TelescopeServiceProvider::class, App\Providers\UserServiceProvider::class, + App\Providers\VoltServiceProvider::class, ]; diff --git a/composer.json b/composer.json index 2e4a0f9a7..a2b559e1a 100644 --- a/composer.json +++ b/composer.json @@ -75,6 +75,8 @@ "laravel/ui": "^4.4", "laravelcollective/html": "^6.4", "league/climate": "^3.8", + "livewire/livewire": "^3.4", + "livewire/volt": "^1.0", "mailerlite/laravel-elasticsearch": "^11.1", "manticoresoftware/manticoresearch-php": "^3.0", "marcreichel/igdb-laravel": "^4.2", @@ -121,6 +123,7 @@ "friendsofphp/php-cs-fixer": "^3.49", "jubeki/laravel-code-style": "^2.0", "larastan/larastan": "^2.8", + "laravel/breeze": "^2.0", "laravel/pint": "^1.13", "laravel/sail": "^1.26", "mockery/mockery": "^1.6", diff --git a/composer.lock b/composer.lock index 5ca5011dc..9962b6a83 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ddb956a243bf17fa54db0477940ad4c1", + "content-hash": "2eed7e02d2472b899adc54c1a29937be", "packages": [ { "name": "aharen/omdbapi", @@ -4896,6 +4896,78 @@ ], "time": "2024-04-24T12:14:15+00:00" }, + { + "name": "livewire/volt", + "version": "v1.6.3", + "source": { + "type": "git", + "url": "https://github.com/livewire/volt.git", + "reference": "e5316b4f3508f759d0da6dc736331720ba14b8bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/volt/zipball/e5316b4f3508f759d0da6dc736331720ba14b8bb", + "reference": "e5316b4f3508f759d0da6dc736331720ba14b8bb", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.38.2|^11.0", + "livewire/livewire": "^3.0", + "php": "^8.1" + }, + "require-dev": { + "laravel/folio": "^1.1", + "mockery/mockery": "^1.6", + "orchestra/testbench": "^8.15.0|^9.0", + "pestphp/pest": "^2.9.5", + "phpstan/phpstan": "^1.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Livewire\\Volt\\VoltServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Livewire\\Volt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "An elegantly crafted functional API for Laravel Livewire.", + "homepage": "https://github.com/livewire/volt", + "keywords": [ + "laravel", + "livewire", + "volt" + ], + "support": { + "issues": "https://github.com/livewire/volt/issues", + "source": "https://github.com/livewire/volt" + }, + "time": "2024-03-06T20:38:22+00:00" + }, { "name": "maennchen/zipstream-php", "version": "2.4.0", @@ -15536,6 +15608,66 @@ ], "time": "2024-04-16T19:13:34+00:00" }, + { + "name": "laravel/breeze", + "version": "v2.0.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/breeze.git", + "reference": "3ee0211a1bdc1aca6ee7913337735bb879738999" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/breeze/zipball/3ee0211a1bdc1aca6ee7913337735bb879738999", + "reference": "3ee0211a1bdc1aca6ee7913337735bb879738999", + "shasum": "" + }, + "require": { + "illuminate/console": "^11.0", + "illuminate/filesystem": "^11.0", + "illuminate/support": "^11.0", + "illuminate/validation": "^11.0", + "php": "^8.2.0", + "symfony/console": "^7.0" + }, + "require-dev": { + "orchestra/testbench": "^9.0", + "phpstan/phpstan": "^1.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Breeze\\BreezeServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Breeze\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Minimal Laravel authentication scaffolding with Blade and Tailwind.", + "keywords": [ + "auth", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/breeze/issues", + "source": "https://github.com/laravel/breeze" + }, + "time": "2024-04-24T07:22:37+00:00" + }, { "name": "laravel/pint", "version": "v1.15.2", diff --git a/config/forum/integration.php b/config/forum/integration.php index 9975dd593..d7f6d60b8 100644 --- a/config/forum/integration.php +++ b/config/forum/integration.php @@ -16,8 +16,8 @@ return [ 'forum' => App\Policies\ForumPolicy::class, 'model' => [ TeamTeaTime\Forum\Models\Category::class => \App\Policies\CategoryPolicy::class, - TeamTeaTime\Forum\Models\Thread::class => TeamTeaTime\Forum\Policies\ThreadPolicy::class, - TeamTeaTime\Forum\Models\Post::class => TeamTeaTime\Forum\Policies\PostPolicy::class, + TeamTeaTime\Forum\Models\Thread::class =>\TeamTeaTime\Forum\Policies\ThreadPolicy::class, + TeamTeaTime\Forum\Models\Post::class => \TeamTeaTime\Forum\Policies\PostPolicy::class, ], ], diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 000000000..9eb408e09 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,67 @@ + env('HASH_DRIVER', 'bcrypt'), + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => env('HASH_VERIFY', true), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => env('ARGON_MEMORY', 65536), + 'threads' => env('ARGON_THREADS', 1), + 'time' => env('ARGON_TIME', 4), + 'verify' => env('HASH_VERIFY', true), + ], + + /* + |-------------------------------------------------------------------------- + | Rehash On Login + |-------------------------------------------------------------------------- + | + | Setting this option to true will tell Laravel to automatically rehash + | the user's password during login if the configured work factor for + | the algorithm has changed, allowing graceful upgrades of hashes. + | + */ + + 'rehash_on_login' => true, + +]; diff --git a/package.json b/package.json index 1c1900d7b..562f01085 100644 --- a/package.json +++ b/package.json @@ -15,14 +15,18 @@ "vitedev": "vite" }, "devDependencies": { + "@tailwindcss/forms": "^0.5.2", + "autoprefixer": "^10.4.2", "axios": "^1.6.8", "cross-env": "^7.0.3", "jquery": "3.7.1", "laravel-mix": "^6.0.49", "lodash": "^4.17.21", "popper.js": "^1.16.1", + "postcss": "^8.4.31", "prettier": "^3.2.5", "resolve-url-loader": "^5.0.0", + "tailwindcss": "^3.1.0", "vue": "^3.4.25", "webpack-cli": "^5.1.4" }, @@ -48,6 +52,7 @@ "jquery-goup": "^1.1.3", "jquery-migrate": "3.4.1", "laravel-echo": "^1.16.1", + "laravel-vite-plugin": "^1.0", "nested-sort": "^5.2.0", "nonblockjs": "^1.0.8", "normalize.css": "^8.0.1", @@ -57,8 +62,7 @@ "pnotify": "4.0.1", "tailwindcss": "^3.4.3", "tinymce": "5.10.9", - "vuedraggable": "^2.24.3", - "laravel-vite-plugin": "^1.0", - "vite": "^5.0" + "vite": "^5.0", + "vuedraggable": "^2.24.3" } } diff --git a/resources/css/app.css b/resources/css/app.css index e69de29bb..b5c61c956 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php index db69f254f..2393f01c9 100644 --- a/resources/views/errors/minimal.blade.php +++ b/resources/views/errors/minimal.blade.php @@ -17,7 +17,7 @@ -
+
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index a255ebfa2..224957f66 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,83 +1,36 @@ - + - - - + + + + - - + {{ config('app.name', 'Laravel') }} - {{ config('app.name', 'Laravel') }} + + + - - + + @vite(['resources/css/app.css', 'resources/js/app.js']) + + +
+ - - - + + @if (isset($header)) +
+
+ {{ $header }} +
+
+ @endif - - - - -
- - -
- @yield('content') -
-
- + +
+ {{ $slot }} +
+
+ diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 23db753af..0464add41 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,132 +1,145 @@ - - - + + + - Laravel + Laravel - - + + + - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- - - - - -
- -
-
-
- - -
-
- Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. + + @vite(['resources/css/app.css', 'resources/js/app.js']) + + +
+ +
+
+
+
+
-
-
+ @if (Route::has('login')) + + @endif + -
-
- - -
+
+ +
-
-
- - -
- -
-
- Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
-
-
- -
-
- -
Vibrant Ecosystem
-
- -
-
- Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
-
+
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
- -
-
-
- - - - - - Shop - - - - - - - - Sponsor - -
-
- -
- Build v{{ Illuminate\Foundation\Application::VERSION }} -
-
-
-
- + diff --git a/routes/web.php b/routes/web.php index be7e04a03..8fdc64b21 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,349 +1,349 @@ name('register'); + Route::get('register', [RegisterController::class, 'showRegistrationForm']); + Route::post('register', [RegisterController::class, 'register'])->name('register'); -Route::get('forgottenpassword', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('forgottenpassword'); -Route::post('forgottenpassword', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('forgottenpassword'); + Route::get('forgottenpassword', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('forgottenpassword'); + Route::post('forgottenpassword', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('forgottenpassword'); -Route::get('terms-and-conditions', [TermsController::class, 'terms']); + Route::get('terms-and-conditions', [TermsController::class, 'terms']); -Route::get('login', [LoginController::class, 'showLoginForm']); -Route::post('login', [LoginController::class, 'login'])->name('login'); -Route::get('logout', [LoginController::class, 'logout'])->name('logout'); + Route::get('login', [LoginController::class, 'showLoginForm']); + Route::post('login', [LoginController::class, 'login'])->name('login'); + Route::get('logout', [LoginController::class, 'logout'])->name('logout'); -Route::middleware('isVerified')->group(function () { - Route::get('resetpassword', [ResetPasswordController::class, 'reset']); - Route::post('resetpassword', [ResetPasswordController::class, 'reset']); + Route::middleware('isVerified')->group(function () { + Route::get('resetpassword', [ResetPasswordController::class, 'reset']); + Route::post('resetpassword', [ResetPasswordController::class, 'reset']); - Route::get('profile', [ProfileController::class, 'show']); + Route::get('profile', [ProfileController::class, 'show']); - Route::prefix('browse')->group(function () { - Route::get('tags', [BrowseController::class, 'tags']); - Route::get('group', [BrowseController::class, 'group']); - Route::get('All', [BrowseController::class, 'index']); - Route::get('{parentCategory}/{id?}', [BrowseController::class, 'show'])->middleware('clearance'); + Route::prefix('browse')->group(function () { + Route::get('tags', [BrowseController::class, 'tags']); + Route::get('group', [BrowseController::class, 'group']); + Route::get('All', [BrowseController::class, 'index']); + Route::get('{parentCategory}/{id?}', [BrowseController::class, 'show'])->middleware('clearance'); + }); + + Route::prefix('cart')->group(function () { + Route::get('index', [CartController::class, 'index']); + Route::post('index', [CartController::class, 'index']); + Route::get('add', [CartController::class, 'store']); + Route::post('add', [CartController::class, 'store']); + Route::get('delete/{id}', [CartController::class, 'destroy']); + Route::post('delete/{id}', [CartController::class, 'destroy']); + }); + + Route::get('details/{guid}', [DetailsController::class, 'show']); + Route::post('details/{guid}', [DetailsController::class, 'show']); + + Route::get('getnzb', [GetNzbController::class, 'getNzb'])->name('getnzb'); + Route::post('getnzb', [GetNzbController::class, 'getNzb'])->name('getnzb'); + + Route::get('rsshelp', [RssController::class, 'showRssDesc'])->name('rsshelp'); + Route::post('rsshelp', [RssController::class, 'showRssDesc'])->name('rsshelp'); + + Route::get('profile', [ProfileController::class, 'show'])->name('profile'); + + Route::get('apihelp', [ApiHelpController::class, 'index'])->name('apihelp'); + Route::get('apiv2help', [ApiHelpController::class, 'apiv2'])->name('apiv2help'); + + Route::get('browsegroup', [BrowseGroupController::class, 'show'])->name('browsegroup'); + + Route::get('content', [ContentController::class, 'show'])->name('content'); + + Route::post('content', [ContentController::class, 'show'])->name('content'); + + Route::get('failed', [FailedReleasesController::class, 'failed'])->name('failed'); + + Route::post('failed', [FailedReleasesController::class, 'failed'])->name('failed'); + + Route::middleware('clearance')->group(function () { + Route::get('Games', [GamesController::class, 'show'])->name('Games'); + Route::post('Games', [GamesController::class, 'show'])->name('Games'); + + Route::get('Movies/{id?}', [MovieController::class, 'showMovies'])->name('Movies'); + + Route::get('movie', [MovieController::class, 'showMovies'])->name('movie'); + + Route::get('movietrailers', [MovieController::class, 'showTrailer'])->name('movietrailers'); + + Route::post('Movies/{id?}', [MovieController::class, 'showMovies'])->name('Movies'); + + Route::post('movie', [MovieController::class, 'showMovies'])->name('movie'); + + Route::post('movietrailers', [MovieController::class, 'showTrailer'])->name('movietrailers'); + + Route::get('Audio/{id?}', [MusicController::class, 'show'])->name('Audio'); + + Route::post('Audio/{id?}', [MusicController::class, 'show'])->name('Audio'); + + Route::get('Console/{id?}', [ConsoleController::class, 'show'])->name('Console'); + + Route::post('Console/{id?}', [ConsoleController::class, 'show'])->name('Console'); + + Route::get('XXX/{id?}', [AdultController::class, 'show'])->name('XXX'); + + Route::post('XXX/{id?}', [AdultController::class, 'show'])->name('XXX'); + + Route::get('anime', [AnimeController::class, 'showAnime'])->name('anime'); + Route::post('anime', [AnimeController::class, 'showAnime'])->name('anime'); + + Route::get('animelist', [AnimeController::class, 'showList'])->name('animelist'); + Route::post('animelist', [AnimeController::class, 'showList'])->name('animelist'); + + Route::get('Books/{id?}', [BooksController::class, 'index'])->name('Books'); + Route::post('Books/{id?}', [BooksController::class, 'index'])->name('Books'); + }); + + Route::get('nfo/{id?}', [NfoController::class, 'showNfo'])->name('nfo'); + + Route::post('nfo/{id?}', [NfoController::class, 'showNfo'])->name('nfo'); + + Route::get('contact-us', [ContactUsController::class, 'showContactForm'])->name('contact-us'); + Route::post('contact-us', [ContactUsController::class, 'contact'])->name('contact-us'); + + Route::get('profileedit', [ProfileController::class, 'edit'])->name('profileedit'); + + Route::post('profileedit', [ProfileController::class, 'edit'])->name('profileedit'); + + Route::get('profile_delete', [ProfileController::class, 'destroy'])->name('profile_delete'); + + Route::post('profile_delete', [ProfileController::class, 'destroy'])->name('profile_delete'); + + Route::get('search', [SearchController::class, 'search'])->name('search'); + + Route::post('search', [SearchController::class, 'search'])->name('search'); + + Route::get('mymovies', [MyMoviesController::class, 'show'])->name('mymovies'); + + Route::post('mymovies', [MyMoviesController::class, 'show'])->name('mymovies'); + + Route::get('myshows', [MyShowsController::class, 'show'])->name('myshows'); + + Route::post('myshows', [MyShowsController::class, 'show'])->name('myshows'); + + Route::get('myshows/browse', [MyShowsController::class, 'browse']); + + Route::post('myshows/browse', [MyShowsController::class, 'browse']); + + Route::get('filelist/{guid}', [FileListController::class, 'show']); + + Route::post('filelist/{guid}', [FileListController::class, 'show']); + + Route::get('series/{id?}', [SeriesController::class, 'index'])->name('series'); + + Route::post('series/{id?}', [SeriesController::class, 'index'])->name('series'); + + Route::get('ajax_profile', [AjaxController::class, 'profile']); + + Route::post('ajax_profile', [AjaxController::class, 'profile']); + + Route::get('2fa', [PasswordSecurityController::class, 'show2faForm']); + Route::post('generate2faSecret', [PasswordSecurityController::class, 'generate2faSecret'])->name('generate2faSecret'); + Route::post('2fa', [PasswordSecurityController::class, 'enable2fa'])->name('enable2fa'); + Route::post('disable2fa', [PasswordSecurityController::class, 'disable2fa'])->name('disable2fa'); }); - Route::prefix('cart')->group(function () { - Route::get('index', [CartController::class, 'index']); - Route::post('index', [CartController::class, 'index']); - Route::get('add', [CartController::class, 'store']); - Route::post('add', [CartController::class, 'store']); - Route::get('delete/{id}', [CartController::class, 'destroy']); - Route::post('delete/{id}', [CartController::class, 'destroy']); + Route::middleware('role:Admin', '2fa')->prefix('admin')->group(function () { + Route::get('index', [AdminPageController::class, 'index']); + Route::get('anidb-delete/{id}', [AdminAnidbController::class, 'destroy']); + Route::post('anidb-delete/{id}', [AdminAnidbController::class, 'destroy']); + Route::get('anidb-edit/{id}', [AdminAnidbController::class, 'edit']); + Route::post('anidb-edit/{id}', [AdminAnidbController::class, 'edit']); + Route::get('anidb-list', [AdminAnidbController::class, 'index']); + Route::post('anidb-list', [AdminAnidbController::class, 'index']); + Route::get('binaryblacklist-list', [AdminBlacklistController::class, 'index']); + Route::post('binaryblacklist-list', [AdminBlacklistController::class, 'index']); + Route::get('binaryblacklist-edit', [AdminBlacklistController::class, 'edit']); + Route::post('binaryblacklist-edit', [AdminBlacklistController::class, 'edit']); + Route::get('book-list', [AdminBookController::class, 'index']); + Route::post('book-list', [AdminBookController::class, 'index']); + Route::get('book-edit', [AdminBookController::class, 'edit']); + Route::post('book-edit', [AdminBookController::class, 'edit']); + Route::get('category-list', [AdminCategoryController::class, 'index']); + Route::post('category-list', [AdminCategoryController::class, 'index']); + Route::get('category-edit', [AdminCategoryController::class, 'edit']); + Route::post('category-edit', [AdminCategoryController::class, 'edit']); + Route::get('user-list', [AdminUserController::class, 'index']); + Route::post('user-list', [AdminUserController::class, 'index']); + Route::get('user-edit', [AdminUserController::class, 'edit']); + Route::post('user-edit', [AdminUserController::class, 'edit']); + Route::get('user-delete', [AdminUserController::class, 'destroy']); + Route::post('user-delete', [AdminUserController::class, 'destroy']); + Route::get('verify', [AdminUserController::class, 'verify']); + Route::post('verify', [AdminUserController::class, 'verify']); + Route::get('resendverification', [AdminUserController::class, 'resendVerification']); + Route::post('resendverification', [AdminUserController::class, 'resendVerification']); + Route::get('site-edit', [AdminSiteController::class, 'edit']); + Route::post('site-edit', [AdminSiteController::class, 'edit']); + Route::get('site-stats', [AdminSiteController::class, 'stats']); + Route::post('site-stats', [AdminSiteController::class, 'stats']); + Route::get('role-list', [AdminRoleController::class, 'index']); + Route::post('role-list', [AdminRoleController::class, 'index']); + Route::get('role-add', [AdminRoleController::class, 'create']); + Route::post('role-add', [AdminRoleController::class, 'create']); + Route::get('role-edit', [AdminRoleController::class, 'edit']); + Route::post('role-edit', [AdminRoleController::class, 'edit']); + Route::get('role-delete', [AdminRoleController::class, 'destroy']); + Route::post('role-delete', [AdminRoleController::class, 'destroy']); + Route::get('content-list', [AdminContentController::class, 'index']); + Route::post('content-list', [AdminContentController::class, 'index']); + Route::get('content-add', [AdminContentController::class, 'create']); + Route::post('content-add', [AdminContentController::class, 'create']); + Route::get('content-delete', [AdminContentController::class, 'destroy']); + Route::post('content-delete', [AdminContentController::class, 'destroy']); + Route::get('category_regexes-list', [AdminCategoryRegexesController::class, 'index']); + Route::post('category_regexes-list', [AdminCategoryRegexesController::class, 'index']); + Route::get('category_regexes-edit', [AdminCategoryRegexesController::class, 'edit']); + Route::post('category_regexes-edit', [AdminCategoryRegexesController::class, 'edit']); + Route::get('collection_regexes-list', [AdminCollectionRegexesController::class, 'index']); + Route::post('collection_regexes-list', [AdminCollectionRegexesController::class, 'index']); + Route::get('collection_regexes-edit', [AdminCollectionRegexesController::class, 'edit']); + Route::post('collection_regexes-edit', [AdminCollectionRegexesController::class, 'edit']); + Route::get('collection_regexes-test', [AdminCollectionRegexesController::class, 'testRegex']); + Route::post('collection_regexes-test', [AdminCollectionRegexesController::class, 'testRegex']); + Route::get('release_naming_regexes-list', [AdminReleaseNamingRegexesController::class, 'index']); + Route::post('release_naming_regexes-list', [AdminReleaseNamingRegexesController::class, 'index']); + Route::get('release_naming_regexes-edit', [AdminReleaseNamingRegexesController::class, 'edit']); + Route::post('release_naming_regexes-edit', [AdminReleaseNamingRegexesController::class, 'edit']); + Route::get('release_naming_regexes-test', [AdminReleaseNamingRegexesController::class, 'testRegex']); + Route::post('release_naming_regexes-test', [AdminReleaseNamingRegexesController::class, 'testRegex']); + Route::get('ajax', [AdminAjaxController::class, 'ajaxAction']); + Route::post('ajax', [AdminAjaxController::class, 'ajaxAction']); + Route::get('tmux-edit', [AdminTmuxController::class, 'edit']); + Route::post('tmux-edit', [AdminTmuxController::class, 'edit']); + Route::get('release-list', [AdminReleasesController::class, 'index']); + Route::post('release-list', [AdminReleasesController::class, 'index']); + Route::get('release-delete/{id}', [AdminReleasesController::class, 'destroy']); + Route::post('release-delete/{id}', [AdminReleasesController::class, 'destroy']); + Route::get('show-list', [AdminShowsController::class, 'index']); + Route::post('show-list', [AdminShowsController::class, 'index']); + Route::get('show-edit', [AdminShowsController::class, 'edit']); + Route::post('show-edit', [AdminShowsController::class, 'edit']); + Route::get('show-remove', [AdminShowsController::class, 'destroy']); + Route::post('show-remove', [AdminShowsController::class, 'destroy']); + Route::get('comments-list', [AdminCommentsController::class, 'index']); + Route::post('comments-list', [AdminCommentsController::class, 'index']); + Route::get('comments-delete/{id}', [AdminCommentsController::class, 'destroy']); + Route::post('comments-delete/{id}', [AdminCommentsController::class, 'destroy']); + Route::get('console-list', [ConsoleController::class, 'index']); + Route::post('console-list', [AdminConsoleController::class, 'index']); + Route::get('console-edit', [AdminConsoleController::class, 'edit']); + Route::post('console-edit', [AdminConsoleController::class, 'edit']); + Route::get('failrel-list', [AdminFailedReleasesController::class, 'index']); + Route::get('game-list', [AdminGameController::class, 'index']); + Route::post('game-list', [AdminGameController::class, 'index']); + Route::get('game-edit', [AdminGameController::class, 'edit']); + Route::post('game-edit', [AdminGameController::class, 'edit']); + Route::get('movie-list', [AdminMovieController::class, 'index']); + Route::post('movie-list', [AdminMovieController::class, 'index']); + Route::get('movie-edit', [AdminMovieController::class, 'edit']); + Route::post('movie-edit', [AdminMovieController::class, 'edit']); + Route::get('movie-add', [AdminMovieController::class, 'create']); + Route::post('movie-add', [AdminMovieController::class, 'create']); + Route::get('music-list', [AdminMusicController::class, 'index']); + Route::post('music-list', [AdminMusicController::class, 'index']); + Route::get('music-edit', [AdminMusicController::class, 'edit']); + Route::post('music-edit', [AdminMusicController::class, 'edit']); + Route::get('nzb-import', [AdminNzbController::class, 'import']); + Route::post('nzb-import', [AdminNzbController::class, 'import']); + Route::get('nzb-export', [AdminNzbController::class, 'export']); + Route::post('nzb-export', [AdminNzbController::class, 'export']); + Route::get('predb', [AdminPredbController::class, 'index']); + Route::post('predb', [AdminPredbController::class, 'index']); + Route::get('group-list', [AdminGroupController::class, 'index']); + Route::post('group-list', [AdminGroupController::class, 'index']); + Route::get('group-edit', [AdminGroupController::class, 'edit']); + Route::post('group-edit', [AdminGroupController::class, 'edit']); + Route::get('group-bulk', [AdminGroupController::class, 'createBulk']); + Route::post('group-bulk', [AdminGroupController::class, 'createBulk']); + Route::get('group-list-active', [AdminGroupController::class, 'active']); + Route::post('group-list-active', [AdminGroupController::class, 'active']); + Route::get('group-list-inactive', [AdminGroupController::class, 'inactive']); + Route::post('group-list-inactive', [AdminGroupController::class, 'inactive']); }); - Route::get('details/{guid}', [DetailsController::class, 'show']); - Route::post('details/{guid}', [DetailsController::class, 'show']); - - Route::get('getnzb', [GetNzbController::class, 'getNzb'])->name('getnzb'); - Route::post('getnzb', [GetNzbController::class, 'getNzb'])->name('getnzb'); - - Route::get('rsshelp', [RssController::class, 'showRssDesc'])->name('rsshelp'); - Route::post('rsshelp', [RssController::class, 'showRssDesc'])->name('rsshelp'); - - Route::get('profile', [ProfileController::class, 'show'])->name('profile'); - - Route::get('apihelp', [ApiHelpController::class, 'index'])->name('apihelp'); - Route::get('apiv2help', [ApiHelpController::class, 'apiv2'])->name('apiv2help'); - - Route::get('browsegroup', [BrowseGroupController::class, 'show'])->name('browsegroup'); - - Route::get('content', [ContentController::class, 'show'])->name('content'); - - Route::post('content', [ContentController::class, 'show'])->name('content'); - - Route::get('failed', [FailedReleasesController::class, 'failed'])->name('failed'); - - Route::post('failed', [FailedReleasesController::class, 'failed'])->name('failed'); - - Route::middleware('clearance')->group(function () { - Route::get('Games', [GamesController::class, 'show'])->name('Games'); - Route::post('Games', [GamesController::class, 'show'])->name('Games'); - - Route::get('Movies/{id?}', [MovieController::class, 'showMovies'])->name('Movies'); - - Route::get('movie', [MovieController::class, 'showMovies'])->name('movie'); - - Route::get('movietrailers', [MovieController::class, 'showTrailer'])->name('movietrailers'); - - Route::post('Movies/{id?}', [MovieController::class, 'showMovies'])->name('Movies'); - - Route::post('movie', [MovieController::class, 'showMovies'])->name('movie'); - - Route::post('movietrailers', [MovieController::class, 'showTrailer'])->name('movietrailers'); - - Route::get('Audio/{id?}', [MusicController::class, 'show'])->name('Audio'); - - Route::post('Audio/{id?}', [MusicController::class, 'show'])->name('Audio'); - - Route::get('Console/{id?}', [ConsoleController::class, 'show'])->name('Console'); - - Route::post('Console/{id?}', [ConsoleController::class, 'show'])->name('Console'); - - Route::get('XXX/{id?}', [AdultController::class, 'show'])->name('XXX'); - - Route::post('XXX/{id?}', [AdultController::class, 'show'])->name('XXX'); - - Route::get('anime', [AnimeController::class, 'showAnime'])->name('anime'); - Route::post('anime', [AnimeController::class, 'showAnime'])->name('anime'); - - Route::get('animelist', [AnimeController::class, 'showList'])->name('animelist'); - Route::post('animelist', [AnimeController::class, 'showList'])->name('animelist'); - - Route::get('Books/{id?}', [BooksController::class, 'index'])->name('Books'); - Route::post('Books/{id?}', [BooksController::class, 'index'])->name('Books'); + Route::middleware('role_or_permission:Admin|Moderator|edit release')->prefix('admin')->group(function () { + Route::get('release-edit', [AdminReleasesController::class, 'edit']); + Route::post('release-edit', [AdminReleasesController::class, 'edit']); }); - Route::get('nfo/{id?}', [NfoController::class, 'showNfo'])->name('nfo'); + Route::post('2faVerify', function () { + return redirect()->to(URL()->previous()); + })->name('2faVerify')->middleware('2fa'); - Route::post('nfo/{id?}', [NfoController::class, 'showNfo'])->name('nfo'); - - Route::get('contact-us', [ContactUsController::class, 'showContactForm'])->name('contact-us'); - Route::post('contact-us', [ContactUsController::class, 'contact'])->name('contact-us'); - - Route::get('profileedit', [ProfileController::class, 'edit'])->name('profileedit'); - - Route::post('profileedit', [ProfileController::class, 'edit'])->name('profileedit'); - - Route::get('profile_delete', [ProfileController::class, 'destroy'])->name('profile_delete'); - - Route::post('profile_delete', [ProfileController::class, 'destroy'])->name('profile_delete'); - - Route::get('search', [SearchController::class, 'search'])->name('search'); - - Route::post('search', [SearchController::class, 'search'])->name('search'); - - Route::get('mymovies', [MyMoviesController::class, 'show'])->name('mymovies'); - - Route::post('mymovies', [MyMoviesController::class, 'show'])->name('mymovies'); - - Route::get('myshows', [MyShowsController::class, 'show'])->name('myshows'); - - Route::post('myshows', [MyShowsController::class, 'show'])->name('myshows'); - - Route::get('myshows/browse', [MyShowsController::class, 'browse']); - - Route::post('myshows/browse', [MyShowsController::class, 'browse']); - - Route::get('filelist/{guid}', [FileListController::class, 'show']); - - Route::post('filelist/{guid}', [FileListController::class, 'show']); - - Route::get('series/{id?}', [SeriesController::class, 'index'])->name('series'); - - Route::post('series/{id?}', [SeriesController::class, 'index'])->name('series'); - - Route::get('ajax_profile', [AjaxController::class, 'profile']); - - Route::post('ajax_profile', [AjaxController::class, 'profile']); - - Route::get('2fa', [PasswordSecurityController::class, 'show2faForm']); - Route::post('generate2faSecret', [PasswordSecurityController::class, 'generate2faSecret'])->name('generate2faSecret'); - Route::post('2fa', [PasswordSecurityController::class, 'enable2fa'])->name('enable2fa'); - Route::post('disable2fa', [PasswordSecurityController::class, 'disable2fa'])->name('disable2fa'); -}); - -Route::middleware('role:Admin', '2fa')->prefix('admin')->group(function () { - Route::get('index', [AdminPageController::class, 'index']); - Route::get('anidb-delete/{id}', [AdminAnidbController::class, 'destroy']); - Route::post('anidb-delete/{id}', [AdminAnidbController::class, 'destroy']); - Route::get('anidb-edit/{id}', [AdminAnidbController::class, 'edit']); - Route::post('anidb-edit/{id}', [AdminAnidbController::class, 'edit']); - Route::get('anidb-list', [AdminAnidbController::class, 'index']); - Route::post('anidb-list', [AdminAnidbController::class, 'index']); - Route::get('binaryblacklist-list', [AdminBlacklistController::class, 'index']); - Route::post('binaryblacklist-list', [AdminBlacklistController::class, 'index']); - Route::get('binaryblacklist-edit', [AdminBlacklistController::class, 'edit']); - Route::post('binaryblacklist-edit', [AdminBlacklistController::class, 'edit']); - Route::get('book-list', [AdminBookController::class, 'index']); - Route::post('book-list', [AdminBookController::class, 'index']); - Route::get('book-edit', [AdminBookController::class, 'edit']); - Route::post('book-edit', [AdminBookController::class, 'edit']); - Route::get('category-list', [AdminCategoryController::class, 'index']); - Route::post('category-list', [AdminCategoryController::class, 'index']); - Route::get('category-edit', [AdminCategoryController::class, 'edit']); - Route::post('category-edit', [AdminCategoryController::class, 'edit']); - Route::get('user-list', [AdminUserController::class, 'index']); - Route::post('user-list', [AdminUserController::class, 'index']); - Route::get('user-edit', [AdminUserController::class, 'edit']); - Route::post('user-edit', [AdminUserController::class, 'edit']); - Route::get('user-delete', [AdminUserController::class, 'destroy']); - Route::post('user-delete', [AdminUserController::class, 'destroy']); - Route::get('verify', [AdminUserController::class, 'verify']); - Route::post('verify', [AdminUserController::class, 'verify']); - Route::get('resendverification', [AdminUserController::class, 'resendVerification']); - Route::post('resendverification', [AdminUserController::class, 'resendVerification']); - Route::get('site-edit', [AdminSiteController::class, 'edit']); - Route::post('site-edit', [AdminSiteController::class, 'edit']); - Route::get('site-stats', [AdminSiteController::class, 'stats']); - Route::post('site-stats', [AdminSiteController::class, 'stats']); - Route::get('role-list', [AdminRoleController::class, 'index']); - Route::post('role-list', [AdminRoleController::class, 'index']); - Route::get('role-add', [AdminRoleController::class, 'create']); - Route::post('role-add', [AdminRoleController::class, 'create']); - Route::get('role-edit', [AdminRoleController::class, 'edit']); - Route::post('role-edit', [AdminRoleController::class, 'edit']); - Route::get('role-delete', [AdminRoleController::class, 'destroy']); - Route::post('role-delete', [AdminRoleController::class, 'destroy']); - Route::get('content-list', [AdminContentController::class, 'index']); - Route::post('content-list', [AdminContentController::class, 'index']); - Route::get('content-add', [AdminContentController::class, 'create']); - Route::post('content-add', [AdminContentController::class, 'create']); - Route::get('content-delete', [AdminContentController::class, 'destroy']); - Route::post('content-delete', [AdminContentController::class, 'destroy']); - Route::get('category_regexes-list', [AdminCategoryRegexesController::class, 'index']); - Route::post('category_regexes-list', [AdminCategoryRegexesController::class, 'index']); - Route::get('category_regexes-edit', [AdminCategoryRegexesController::class, 'edit']); - Route::post('category_regexes-edit', [AdminCategoryRegexesController::class, 'edit']); - Route::get('collection_regexes-list', [AdminCollectionRegexesController::class, 'index']); - Route::post('collection_regexes-list', [AdminCollectionRegexesController::class, 'index']); - Route::get('collection_regexes-edit', [AdminCollectionRegexesController::class, 'edit']); - Route::post('collection_regexes-edit', [AdminCollectionRegexesController::class, 'edit']); - Route::get('collection_regexes-test', [AdminCollectionRegexesController::class, 'testRegex']); - Route::post('collection_regexes-test', [AdminCollectionRegexesController::class, 'testRegex']); - Route::get('release_naming_regexes-list', [AdminReleaseNamingRegexesController::class, 'index']); - Route::post('release_naming_regexes-list', [AdminReleaseNamingRegexesController::class, 'index']); - Route::get('release_naming_regexes-edit', [AdminReleaseNamingRegexesController::class, 'edit']); - Route::post('release_naming_regexes-edit', [AdminReleaseNamingRegexesController::class, 'edit']); - Route::get('release_naming_regexes-test', [AdminReleaseNamingRegexesController::class, 'testRegex']); - Route::post('release_naming_regexes-test', [AdminReleaseNamingRegexesController::class, 'testRegex']); - Route::get('ajax', [AdminAjaxController::class, 'ajaxAction']); - Route::post('ajax', [AdminAjaxController::class, 'ajaxAction']); - Route::get('tmux-edit', [AdminTmuxController::class, 'edit']); - Route::post('tmux-edit', [AdminTmuxController::class, 'edit']); - Route::get('release-list', [AdminReleasesController::class, 'index']); - Route::post('release-list', [AdminReleasesController::class, 'index']); - Route::get('release-delete/{id}', [AdminReleasesController::class, 'destroy']); - Route::post('release-delete/{id}', [AdminReleasesController::class, 'destroy']); - Route::get('show-list', [AdminShowsController::class, 'index']); - Route::post('show-list', [AdminShowsController::class, 'index']); - Route::get('show-edit', [AdminShowsController::class, 'edit']); - Route::post('show-edit', [AdminShowsController::class, 'edit']); - Route::get('show-remove', [AdminShowsController::class, 'destroy']); - Route::post('show-remove', [AdminShowsController::class, 'destroy']); - Route::get('comments-list', [AdminCommentsController::class, 'index']); - Route::post('comments-list', [AdminCommentsController::class, 'index']); - Route::get('comments-delete/{id}', [AdminCommentsController::class, 'destroy']); - Route::post('comments-delete/{id}', [AdminCommentsController::class, 'destroy']); - Route::get('console-list', [ConsoleController::class, 'index']); - Route::post('console-list', [AdminConsoleController::class, 'index']); - Route::get('console-edit', [AdminConsoleController::class, 'edit']); - Route::post('console-edit', [AdminConsoleController::class, 'edit']); - Route::get('failrel-list', [AdminFailedReleasesController::class, 'index']); - Route::get('game-list', [AdminGameController::class, 'index']); - Route::post('game-list', [AdminGameController::class, 'index']); - Route::get('game-edit', [AdminGameController::class, 'edit']); - Route::post('game-edit', [AdminGameController::class, 'edit']); - Route::get('movie-list', [AdminMovieController::class, 'index']); - Route::post('movie-list', [AdminMovieController::class, 'index']); - Route::get('movie-edit', [AdminMovieController::class, 'edit']); - Route::post('movie-edit', [AdminMovieController::class, 'edit']); - Route::get('movie-add', [AdminMovieController::class, 'create']); - Route::post('movie-add', [AdminMovieController::class, 'create']); - Route::get('music-list', [AdminMusicController::class, 'index']); - Route::post('music-list', [AdminMusicController::class, 'index']); - Route::get('music-edit', [AdminMusicController::class, 'edit']); - Route::post('music-edit', [AdminMusicController::class, 'edit']); - Route::get('nzb-import', [AdminNzbController::class, 'import']); - Route::post('nzb-import', [AdminNzbController::class, 'import']); - Route::get('nzb-export', [AdminNzbController::class, 'export']); - Route::post('nzb-export', [AdminNzbController::class, 'export']); - Route::get('predb', [AdminPredbController::class, 'index']); - Route::post('predb', [AdminPredbController::class, 'index']); - Route::get('group-list', [AdminGroupController::class, 'index']); - Route::post('group-list', [AdminGroupController::class, 'index']); - Route::get('group-edit', [AdminGroupController::class, 'edit']); - Route::post('group-edit', [AdminGroupController::class, 'edit']); - Route::get('group-bulk', [AdminGroupController::class, 'createBulk']); - Route::post('group-bulk', [AdminGroupController::class, 'createBulk']); - Route::get('group-list-active', [AdminGroupController::class, 'active']); - Route::post('group-list-active', [AdminGroupController::class, 'active']); - Route::get('group-list-inactive', [AdminGroupController::class, 'inactive']); - Route::post('group-list-inactive', [AdminGroupController::class, 'inactive']); -}); - -Route::middleware('role_or_permission:Admin|Moderator|edit release')->prefix('admin')->group(function () { - Route::get('release-edit', [AdminReleasesController::class, 'edit']); - Route::post('release-edit', [AdminReleasesController::class, 'edit']); -}); - -Route::post('2faVerify', function () { - return redirect()->to(URL()->previous()); -})->name('2faVerify')->middleware('2fa'); - -Route::post('btcpay/webhook', [BtcPaymentController::class, 'btcPayCallback'])->name('btcpay.webhook'); + Route::post('btcpay/webhook', [BtcPaymentController::class, 'btcPayCallback'])->name('btcpay.webhook'); diff --git a/vite.config.js b/vite.config.js index 2c5398be5..7bc1aa0d5 100644 --- a/vite.config.js +++ b/vite.config.js @@ -7,8 +7,6 @@ export default defineConfig({ input: [ 'resources/css/app.css', 'resources/js/app.js', - 'resources/forum/blade-tailwind/css/forum.css', - 'resources/forum/blade-tailwind/js/forum.js', 'resources/forum/livewire-tailwind/css/forum.css', 'resources/forum/livewire-tailwind/js/forum.js', ],