2021-04-16 01:00:00 +02:00
< ? php
use Illuminate\Support\Facades\Route ;
use App\Http\Controllers\AdminController ;
use App\Http\Controllers\UserController ;
2022-11-08 16:11:59 +01:00
use App\Http\Controllers\Auth\SocialLoginController ;
use App\Http\Controllers\LinkTypeViewController ;
use App\Http\Controllers\PagesController ;
2022-11-23 15:52:33 +01:00
use App\Http\Controllers\InstallerController ;
2021-04-16 01:00:00 +02:00
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application . These
| routes are loaded by the RouteServiceProvider within a group which
| contains the " web " middleware group . Now create something great !
|
*/
2022-06-14 23:45:11 +02:00
// Prevents section below from being run by 'composer update'
if ( file_exists ( base_path ( 'storage/app/ISINSTALLED' ))){
2022-11-23 15:52:33 +01:00
// generates new APP KEY if no one is set
if ( EnvEditor :: getKey ( 'APP_KEY' ) == '' ){ Artisan :: call ( 'key:generate' );}
// copies template meta config if none is present
if ( ! file_exists ( base_path ( " config/advanced-config.php " ))){ copy ( base_path ( 'storage/templates/advanced-config.php' ), base_path ( 'config/advanced-config.php' ));}
}
2022-06-07 23:15:39 +02:00
2022-11-23 15:52:33 +01:00
// Installer
2023-02-13 13:41:30 +01:00
if ( file_exists ( base_path ( 'INSTALLING' )) or file_exists ( base_path ( 'INSTALLERLOCK' ))){
2022-11-23 15:52:33 +01:00
Route :: get ( '/' , [ InstallerController :: class , 'showInstaller' ]) -> name ( 'showInstaller' );
Route :: post ( '/create-admin' , [ InstallerController :: class , 'createAdmin' ]) -> name ( 'createAdmin' );
Route :: post ( '/db' , [ InstallerController :: class , 'db' ]) -> name ( 'db' );
Route :: post ( '/mysql' , [ InstallerController :: class , 'mysql' ]) -> name ( 'mysql' );
Route :: post ( '/options' , [ InstallerController :: class , 'options' ]) -> name ( 'options' );
Route :: get ( '/mysql-test' , [ InstallerController :: class , 'mysqlTest' ]) -> name ( 'mysqlTest' );
2023-01-19 21:12:08 +01:00
Route :: get ( '/skip' , function () { Artisan :: call ( 'db:seed' , [ '--class' => 'AdminSeeder' ,]); return redirect ( url ( '' ));});
2022-11-23 15:52:33 +01:00
2022-12-02 16:30:10 +01:00
Route :: get ( '{any}' , function () {
if ( ! DB :: table ( 'users' ) -> get () -> isEmpty ()){
2023-02-13 13:22:49 +01:00
if ( file_exists ( base_path ( " INSTALLING " )) and ! file_exists ( base_path ( 'INSTALLERLOCK' ))){ unlink ( base_path ( " INSTALLING " )); header ( " Refresh:0 " );}
2022-12-02 16:30:10 +01:00
} else {
return redirect ( url ( '' ));
}
}) -> where ( 'any' , '.*' );
2022-11-23 15:52:33 +01:00
} else {
2022-06-08 18:51:14 +02:00
2022-08-08 15:50:40 +02:00
// Disables routes if in Maintenance Mode
if ( env ( 'MAINTENANCE_MODE' ) != 'true' and ! file_exists ( base_path ( " storage/MAINTENANCE " ))){
2022-11-08 16:11:59 +01:00
//Changes the homepage to a littlelink Custom profile if set in the config
2022-06-09 22:51:16 +02:00
if ( config ( 'advanced-config.custom_home_url' ) != '' ) {
$custom_home_page_url = config ( 'advanced-config.custom_home_url' );
2022-06-09 16:45:05 +02:00
} else {
$custom_home_page_url = " /home " ;
}
2022-03-24 14:44:33 +01:00
if ( env ( 'HOME_URL' ) != '' ) {
Route :: get ( '/' , [ UserController :: class , 'littlelinkhome' ]) -> name ( 'littlelink' );
2022-06-09 22:51:16 +02:00
if ( config ( 'advanced-config.disable_home_page' ) == 'redirect' ) {
Route :: get ( $custom_home_page_url , function () { return redirect ( config ( 'advanced-config.redirect_home_page' ));});
} elseif ( config ( 'advanced-config.disable_home_page' ) != 'true' ) {
2022-06-09 17:07:45 +02:00
Route :: get ( $custom_home_page_url , [ App\Http\Controllers\HomeController :: class , 'home' ]) -> name ( 'home' );}
2022-03-24 14:44:33 +01:00
} else {
2022-06-09 22:51:16 +02:00
if ( config ( 'advanced-config.disable_home_page' ) == 'redirect' ) {
Route :: get ( '/' , function () { return redirect ( config ( 'advanced-config.redirect_home_page' ));});
} elseif ( config ( 'advanced-config.disable_home_page' ) != 'true' ) {
2022-06-09 16:45:05 +02:00
Route :: get ( '/' , [ App\Http\Controllers\HomeController :: class , 'home' ]) -> name ( 'home' );}
2022-03-24 14:44:33 +01:00
}
2022-03-19 18:34:43 +01:00
//Redirect if no page URL is set
Route :: get ( '/@' , function () {
return redirect ( '/studio/no_page_name' );
});
2022-04-20 17:31:38 +02:00
//Show diagnose page
Route :: get ( '/panel/diagnose' , function () {
return view ( 'panel/diagnose' , []);
});
2021-04-16 01:00:00 +02:00
//Public route
2022-06-09 22:51:16 +02:00
$custom_prefix = config ( 'advanced-config.custom_url_prefix' );
2022-11-25 16:50:11 +01:00
Route :: get ( '/going/{id?}' , [ UserController :: class , 'clickNumber' ]) -> where ( 'link' , '.*' ) -> name ( 'clickNumber' );
2022-11-13 22:56:07 +01:00
if ( ! str_contains ( url () -> full (), '@' ) and ! in_array ( url () -> full (), [ url ( 'login' ), url ( 'register' ), url ( 'update' ), url ( 'update?error=' ), url ( 'update?success=' ), url ( 'update?finishing=' ), url ( 'update?updating=' ), url ( 'update?backups=' ), url ( 'update?backup=' ), url ( 'update?updating-windows=' ), url ( 'update?preparing=' ), url ( 'updating' ), url ( 'backup' )])) {
Route :: get ( '/' . $custom_prefix . '{littlelink}' , [ UserController :: class , 'littlelink' ]) -> name ( 'littlelink' );}
2021-07-06 10:56:05 +02:00
Route :: get ( '/@{littlelink}' , [ UserController :: class , 'littlelink' ]) -> name ( 'littlelink' );
2023-02-06 20:13:11 +01:00
Route :: get ( '/pages/' . strtolower ( env ( 'TITLE_FOOTER_TERMS' )), [ AdminController :: class , 'pagesTerms' ]) -> name ( 'pagesTerms' );
Route :: get ( '/pages/' . strtolower ( env ( 'TITLE_FOOTER_PRIVACY' )), [ AdminController :: class , 'pagesPrivacy' ]) -> name ( 'pagesPrivacy' );
Route :: get ( '/pages/' . strtolower ( env ( 'TITLE_FOOTER_CONTACT' )), [ AdminController :: class , 'pagesContact' ]) -> name ( 'pagesContact' );
2022-05-31 14:11:26 +02:00
Route :: get ( '/theme/@{littlelink}' , [ UserController :: class , 'theme' ]) -> name ( 'theme' );
2021-04-16 01:00:00 +02:00
//User route
Route :: group ([
2022-03-19 16:48:21 +01:00
'middleware' => env ( 'REGISTER_AUTH' ),
2021-04-16 01:00:00 +02:00
], function () {
2022-11-20 14:10:49 +01:00
if ( env ( 'FORCE_ROUTE_HTTPS' ) == 'true' ){ URL :: forceScheme ( 'https' );}
2022-08-05 17:29:49 +02:00
if ( isset ( $_COOKIE [ 'LinkCount' ])){ if ( $_COOKIE [ 'LinkCount' ] == '20' ){ $LinkPage = 'showLinks20' ;} elseif ( $_COOKIE [ 'LinkCount' ] == '30' ){ $LinkPage = 'showLinks30' ;} elseif ( $_COOKIE [ 'LinkCount' ] == 'all' ){ $LinkPage = 'showLinksAll' ;} else { $LinkPage = 'showLinks' ;}} else { $LinkPage = 'showLinks' ;} //Shows correct link number
2021-04-16 01:00:00 +02:00
Route :: get ( '/studio/index' , [ UserController :: class , 'index' ]) -> name ( 'studioIndex' );
2022-11-08 16:11:59 +01:00
Route :: get ( '/studio/add-link' , [ UserController :: class , 'AddUpdateLink' ]) -> name ( 'showButtons' );
Route :: post ( '/studio/edit-link' , [ UserController :: class , 'saveLink' ]) -> name ( 'addLink' );
Route :: get ( '/studio/edit-link/{id}' , [ UserController :: class , 'AddUpdateLink' ]) -> name ( 'showLink' );
2022-08-14 21:05:26 +02:00
Route :: post ( '/studio/sort-link' , [ UserController :: class , 'sortLinks' ]) -> name ( 'sortLinks' );
2022-08-05 17:29:49 +02:00
Route :: get ( '/studio/links' , [ UserController :: class , $LinkPage ]) -> name ( $LinkPage );
2022-05-18 21:08:58 +02:00
Route :: get ( '/studio/theme' , [ UserController :: class , 'showTheme' ]) -> name ( 'showTheme' );
Route :: post ( '/studio/theme' , [ UserController :: class , 'editTheme' ]) -> name ( 'editTheme' );
2021-04-16 01:00:00 +02:00
Route :: get ( '/deleteLink/{id}' , [ UserController :: class , 'deleteLink' ]) -> name ( 'deleteLink' );
Route :: get ( '/upLink/{up}/{id}' , [ UserController :: class , 'upLink' ]) -> name ( 'upLink' );
Route :: post ( '/studio/edit-link/{id}' , [ UserController :: class , 'editLink' ]) -> name ( 'editLink' );
2022-04-27 20:55:19 +02:00
Route :: get ( '/studio/button-editor/{id}' , [ UserController :: class , 'showCSS' ]) -> name ( 'showCSS' );
Route :: post ( '/studio/button-editor/{id}' , [ UserController :: class , 'editCSS' ]) -> name ( 'editCSS' );
2021-04-16 01:00:00 +02:00
Route :: get ( '/studio/page' , [ UserController :: class , 'showPage' ]) -> name ( 'showPage' );
2022-03-19 18:34:43 +01:00
Route :: get ( '/studio/no_page_name' , [ UserController :: class , 'showPage' ]) -> name ( 'showPage' );
2021-04-16 01:00:00 +02:00
Route :: post ( '/studio/page' , [ UserController :: class , 'editPage' ]) -> name ( 'editPage' );
2023-02-13 16:22:11 +01:00
Route :: post ( '/studio/background' , [ UserController :: class , 'themeBackground' ]) -> name ( 'themeBackground' );
2023-02-13 18:40:18 +01:00
Route :: get ( '/studio/rem-background' , [ UserController :: class , 'removeBackground' ]) -> name ( 'removeBackground' );
2021-04-16 01:00:00 +02:00
Route :: get ( '/studio/profile' , [ UserController :: class , 'showProfile' ]) -> name ( 'showProfile' );
Route :: post ( '/studio/profile' , [ UserController :: class , 'editProfile' ]) -> name ( 'editProfile' );
2022-12-05 20:00:16 +01:00
Route :: post ( '/edit-icons' , [ UserController :: class , 'editIcons' ]) -> name ( 'editIcons' );
2022-12-06 16:21:33 +01:00
Route :: get ( '/clearIcon/{id}' , [ UserController :: class , 'clearIcon' ]) -> name ( 'clearIcon' );
2023-01-23 17:19:09 +01:00
Route :: get ( '/studio/page/delprofilepicture' , [ UserController :: class , 'delProfilePicture' ]) -> name ( 'delProfilePicture' );
2022-11-08 16:11:59 +01:00
Route :: get ( '/studio/delete-user/{id}' , [ UserController :: class , 'deleteUser' ]) -> name ( 'deleteUser' ) -> middleware ( 'verified' );
Route :: get ( '/studio/linkparamform_part/{typeid}/{linkid}' , [ LinkTypeViewController :: class , 'getParamForm' ]) -> name ( 'linkparamform.part' );
2021-04-16 01:00:00 +02:00
});
2022-08-08 14:55:54 +02:00
}
2022-11-08 16:11:59 +01:00
//Social login route
Route :: get ( '/social-auth/{provider}/callback' , [ SocialLoginController :: class , 'providerCallback' ]);
Route :: get ( '/social-auth/{provider}' , [ SocialLoginController :: class , 'redirectToProvider' ]) -> name ( 'social.redirect' );
2021-04-16 01:00:00 +02:00
//Admin route
Route :: group ([
'middleware' => 'admin' ,
], function () {
2022-11-20 14:10:49 +01:00
if ( env ( 'FORCE_ROUTE_HTTPS' ) == 'true' ){ URL :: forceScheme ( 'https' );}
2022-11-08 16:11:59 +01:00
Route :: get ( '/panel/index' , [ AdminController :: class , 'index' ]) -> name ( 'panelIndex' );
Route :: get ( '/panel/users/{type}' , [ AdminController :: class , 'users' ]) -> name ( 'showUsers' );
Route :: post ( '/panel/users/{name?}' , [ AdminController :: class , 'searchUser' ]) -> name ( 'searchUser' );
Route :: get ( '/panel/links/{id}' , [ AdminController :: class , 'showLinksUser' ]) -> name ( 'showLinksUser' );
Route :: get ( '/panel/deleteLink/{id}' , [ AdminController :: class , 'deleteLinkUser' ]) -> name ( 'deleteLinkUser' );
Route :: get ( '/panel/users/block/{block}/{id}' , [ AdminController :: class , 'blockUser' ]) -> name ( 'blockUser' );
Route :: get ( '/panel/users/verify/-{verify}/{id}' , [ AdminController :: class , 'verifyUser' ]) -> name ( 'verifyUser' );
Route :: get ( '/panel/edit-user/{id}' , [ AdminController :: class , 'showUser' ]) -> name ( 'showUser' );
Route :: post ( '/panel/edit-user/{id}' , [ AdminController :: class , 'editUser' ]) -> name ( 'editUser' );
Route :: get ( '/panel/new-user' , [ AdminController :: class , 'createNewUser' ]) -> name ( 'createNewUser' );
Route :: get ( '/panel/delete-user/{id}' , [ AdminController :: class , 'deleteUser' ]) -> name ( 'deleteUser' );
Route :: get ( '/panel/pages' , [ AdminController :: class , 'showSitePage' ]) -> name ( 'showSitePage' );
Route :: post ( '/panel/pages' , [ AdminController :: class , 'editSitePage' ]) -> name ( 'editSitePage' );
Route :: get ( '/panel/advanced-config' , [ AdminController :: class , 'showFileEditor' ]) -> name ( 'showFileEditor' );
Route :: post ( '/panel/advanced-config' , [ AdminController :: class , 'editAC' ]) -> name ( 'editAC' );
Route :: get ( '/panel/env' , [ AdminController :: class , 'showFileEditor' ]) -> name ( 'showFileEditor' );
Route :: post ( '/panel/env' , [ AdminController :: class , 'editENV' ]) -> name ( 'editENV' );
Route :: get ( '/panel/site' , [ AdminController :: class , 'showSite' ]) -> name ( 'showSite' );
Route :: post ( '/panel/site' , [ AdminController :: class , 'editSite' ]) -> name ( 'editSite' );
2022-12-04 21:31:07 +01:00
Route :: get ( '/panel/site/delavatar' , [ AdminController :: class , 'delAvatar' ]) -> name ( 'delAvatar' );
Route :: get ( '/panel/site/delfavicon' , [ AdminController :: class , 'delFavicon' ]) -> name ( 'delFavicon' );
2022-11-08 16:11:59 +01:00
Route :: get ( '/panel/phpinfo' , [ AdminController :: class , 'phpinfo' ]) -> name ( 'phpinfo' );
Route :: get ( '/panel/backups' , [ AdminController :: class , 'showBackups' ]) -> name ( 'showBackups' );
Route :: post ( '/panel/theme' , [ AdminController :: class , 'deleteTheme' ]) -> name ( 'deleteTheme' );
Route :: get ( '/panel/theme' , [ AdminController :: class , 'showThemes' ]) -> name ( 'showThemes' );
Route :: get ( '/update/theme' , [ AdminController :: class , 'updateThemes' ]) -> name ( 'updateThemes' );
2022-11-17 15:07:06 +01:00
Route :: get ( '/panel/config' , [ AdminController :: class , 'showConfig' ]) -> name ( 'showConfig' );
Route :: post ( '/panel/config' , [ AdminController :: class , 'editConfig' ]) -> name ( 'editConfig' );
2022-11-08 16:11:59 +01:00
Route :: get ( '/update' , function () { return view ( 'update' , []);});
Route :: get ( '/backup' , function () { return view ( 'backup' , []);});
Route :: group ([ 'namespace' => 'App\Http\Controllers\Admin' , 'prefix' => 'admin' , 'as' => 'admin' ], function () {
//Route::resource('/admin/linktype', LinkTypeController::class);
Route :: resources ([
'linktype' => LinkTypeController :: class
]);
});
Route :: get ( '/updating' , function ( \Codedge\Updater\UpdaterManager $updater ) {
2022-05-25 16:20:05 +02:00
// Check if new version is available
2022-05-30 11:39:39 +02:00
if ( $updater -> source () -> isNewVersionAvailable () and ( file_exists ( base_path ( " backups/CANUPDATE " )) or env ( 'SKIP_UPDATE_BACKUP' ) == true )) {
2022-05-25 16:20:05 +02:00
2022-08-08 14:09:11 +02:00
$tst = base_path ( 'storage/' );
file_put_contents ( $tst . 'MAINTENANCE' , '' );
2022-05-25 16:20:05 +02:00
// Get the current installed version
echo $updater -> source () -> getVersionInstalled ();
// Get the new version available
$versionAvailable = $updater -> source () -> getVersionAvailable ();
// Create a release
$release = $updater -> source () -> fetch ( $versionAvailable );
// Run the update process
$updater -> source () -> update ( $release );
2022-05-30 11:39:39 +02:00
if ( env ( 'SKIP_UPDATE_BACKUP' ) != true ) { unlink ( base_path ( " backups/CANUPDATE " ));}
2022-05-25 16:20:05 +02:00
2022-05-26 12:12:09 +02:00
echo " <meta http-equiv= \" refresh \" content= \" 0; " . url () -> current () . " /../update?finishing \" /> " ;
2022-05-25 16:20:05 +02:00
} else {
2022-05-26 12:12:09 +02:00
echo " <meta http-equiv= \" refresh \" content= \" 0; " . url () -> current () . " /../update?error \" /> " ;
2022-05-25 16:20:05 +02:00
}
});
2022-11-08 16:11:59 +01:00
}); // ENd Admin authenticated routes
2021-04-16 01:00:00 +02:00
2022-08-08 15:30:28 +02:00
// Displays Maintenance Mode page
if ( env ( 'MAINTENANCE_MODE' ) == 'true' or file_exists ( base_path ( " storage/MAINTENANCE " ))){
Route :: get ( '/{any}' , function () {
return view ( 'maintenance' );
}) -> where ( 'any' , '.*' );
}
2022-11-23 15:52:33 +01:00
}
2021-04-16 01:00:00 +02:00
require __DIR__ . '/auth.php' ;