View file File name : web.php Content :<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\Web\V1\AssociationController; use App\Http\Controllers\Web\V1\LinkResolverController; use App\Http\Controllers\Web\V1\SitemapController; use App\Http\Controllers\Web\V1\AuthController; use App\Livewire\Auth\Login; use App\Livewire\Auth\Register; use App\Livewire\Auth\ForgotPassword; use App\Livewire\Auth\ResetPassword; use App\Livewire\Dashboard; use App\Livewire\Apps\Index as AppsIndex; use App\Livewire\Apps\Show as AppShow; use App\Livewire\Apps\Edit as AppEdit; use App\Livewire\ApiKeys\Index as ApiKeysIndex; use App\Livewire\ApiKeys\Create as ApiKeysCreate; use App\Livewire\ApiKeys\Show as ApiKeysShow; use App\Livewire\ApiKeys\Edit as ApiKeysEdit; use App\Livewire\Teams\Index as TeamsIndex; use App\Livewire\Teams\Create as TeamsCreate; use App\Livewire\Teams\Edit as TeamsEdit; use App\Livewire\Teams\Show as TeamsShow; use App\Livewire\Teams\Invite as TeamsInvite; use App\Livewire\Profile\ProfileSettings; use App\Livewire\Profile\PublicProfile; use App\Http\Controllers\Web\V1\DownloadController; use App\Livewire\Apps\Tabs\Overview; use App\Livewire\Apps\Tabs\Links; use App\Livewire\Apps\Tabs\Analytics; use App\Livewire\Apps\Tabs\Feedback; use App\Livewire\Apps\Tabs\AppMetadata; use App\Livewire\Apps\Tabs\ShortLinks; use App\Livewire\Apps\Tabs\Community as AppCommunity; use App\Livewire\Apps\Tabs\Blog as AppBlog; use App\Livewire\Apps\Tabs\BlogTranslations as AppBlogTranslations; use App\Livewire\Apps\AppsFeedback; use App\Livewire\Admin\Dashboard as SuperAdminDashboard; use App\Livewire\Admin\Feedback as SuperAdminFeedback; use App\Livewire\Community\Index as CommunityIndex; use App\Livewire\Community\Show as CommunityShow; use App\Livewire\Community\CreatePost as CommunityCreatePost; use App\Livewire\Blog\Index as BlogIndex; use App\Livewire\Blog\Show as BlogShow; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- */ // Apple App Site Association and Asset Links Route::withoutMiddleware('web')->prefix('.well-known')->group(function () { Route::get('/apple-app-site-association', [AssociationController::class, 'appstoreAssociation']); Route::get('/assetlinks.json', [AssociationController::class, 'assetlinks']); }); // SEO Routes Route::get('/sitemap.xml', [SitemapController::class, 'sitemap'])->name('sitemap'); Route::get('/robots.txt', [SitemapController::class, 'robots'])->name('robots'); // Smart Link Resolver Route::prefix('l')->group(function () { Route::get('/{code}', [LinkResolverController::class, 'resolveShort'])->name('shortlink.resolver'); Route::get('/{app}/{path?}', [LinkResolverController::class, 'resolve'])->where('path', '.*')->name('link.resolver'); }); // Legacy Redirects Route::get('/redirect/{app}/{campaign?}', [LinkResolverController::class, 'resolve'])->name('redirect.old'); Route::get('/download/{app}/{campaign?}', [DownloadController::class, 'downloadPage'])->name('download'); Route::get('/app/{app}/privacy', [DownloadController::class, 'privacyPolicy'])->name('app.privacy'); Route::get('/app/{app}/terms', [DownloadController::class, 'termsOfService'])->name('app.terms'); // Guest Routes Route::middleware('guest')->group(function () { Route::get('/login', Login::class)->name('login'); Route::post('/login', Login::class); // Add POST route for form submission Route::get('/register', Register::class)->name('register'); Route::get('/password/request', ForgotPassword::class)->name('password.request'); Route::get('/password/reset/{token}', ResetPassword::class)->name('password.reset'); }); // Public Routes Route::get('/', Dashboard::class)->name('home'); Route::get('/home', Dashboard::class)->name('home'); Route::get('/#features', Dashboard::class)->name('home.features'); Route::get('/profile/{username}', PublicProfile::class)->name('profile.public'); // Community Routes (Public) Route::get('/communities', CommunityIndex::class)->name('community.index'); Route::get('/community/{community}', CommunityShow::class)->name('community.show'); // Blog Routes (Public) - SEO friendly Route::get('/blog', BlogIndex::class)->name('blog.index'); Route::get('/blog/{slug}', BlogShow::class)->name('blog.show'); Route::get('/{app}/blog', BlogIndex::class)->name('app.blog.index'); Route::get('/{app}/blog/{slug}', BlogShow::class)->name('app.blog.show'); // Authenticated Routes Route::middleware('auth')->group(function () { // Apps Route::get('/apps', AppsIndex::class)->name('apps.index'); Route::get('/apps/feedback', AppsFeedback::class)->name('apps-feedback.index'); Route::get('/apps/{app}', AppShow::class)->name('apps.show'); Route::get('/apps/{app}/edit', AppEdit::class)->name('apps.edit'); Route::get('/apps/{app}/overview', Overview::class)->name('apps.overview'); Route::get('/apps/{app}/links', Links::class)->name('apps.links'); Route::get('/apps/{app}/shortlinks', ShortLinks::class)->name('apps.shortlinks'); // Removed because class does not exist Route::get('/apps/{app}/analytics', Analytics::class)->name('apps.analytics'); Route::get('/apps/{app}/feedback', Feedback::class)->name('apps.feedback'); Route::get('/apps/{app}/metadata', AppMetadata::class)->name('apps.metadata'); Route::get('/apps/{app}/community', AppCommunity::class)->name('apps.community'); Route::get('/apps/{app}/blog', AppBlog::class)->name('apps.blog'); Route::get('/apps/{app}/blog/{blogPost}/translations', AppBlogTranslations::class)->name('apps.blog.translations'); // Teams Route::get('/teams', TeamsIndex::class)->name('teams.index'); Route::get('/teams/create', TeamsCreate::class)->name('teams.create'); Route::get('/teams/{team}', TeamsShow::class)->name('teams.show'); Route::get('/teams/{team}/edit', TeamsEdit::class)->name('teams.edit'); Route::get('/teams/{team}/invite', TeamsInvite::class)->name('teams.invite'); // API Keys Route::get('/api-keys', ApiKeysIndex::class)->name('api-keys.index'); Route::get('/api-keys/create', ApiKeysCreate::class)->name('api-keys.create'); Route::get('/api-keys/{id}', ApiKeysShow::class)->name('api-keys.show'); Route::get('/api-keys/{id}/edit', ApiKeysEdit::class)->name('api-keys.edit'); // Profile Route::get('/profile-settings', ProfileSettings::class)->name('profile.settings'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); // Community Routes (Authenticated) Route::get('/community/{community}/create-post', CommunityCreatePost::class)->name('community.create-post'); }); Route::middleware('super-admin')->group(function () { Route::get('/super-admin/dashboard', SuperAdminDashboard::class)->name('super-admin.dashboard'); Route::get('/super-admin/feedback', SuperAdminFeedback::class)->name('super-admin.feedback'); }); Route::any('/{any}', function () { return redirect()->route('home'); })->where('any', '.*');