You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.9 KiB

5 months ago
<?php
use App\Http\Controllers\ChannelEntryController;
use App\Models\PublicSourceChannel;
5 months ago
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
$sourceCode = trim((string) request()->query('src', ''));
$publicSourceCode = null;
if (preg_match('/^[A-Za-z0-9_-]{2,64}$/', $sourceCode) === 1) {
try {
$publicSourceCode = PublicSourceChannel::query()
->where('source_code', $sourceCode)
->where('status', PublicSourceChannel::STATUS_ENABLED)
->value('source_code');
} catch (Throwable) {
$publicSourceCode = null;
}
}
return view('welcome', [
'publicSourceCode' => $publicSourceCode,
]);
5 months ago
});
Route::get('/channel-entry', ChannelEntryController::class)->name('channel.entry');
5 months ago
/** cxxfds-web 生产构建产出目录:public/admin */
Route::redirect('/admin', '/admin/', 301);
Route::get('/admin/{path?}', function (?string $path = null) {
if ($path !== null && $path !== '') {
$candidate = public_path('admin/'.$path);
if (File::isFile($candidate)) {
return response()->file($candidate);
}
}
$index = public_path('admin/index.html');
if (! File::exists($index)) {
abort(503, 'Admin frontend not built. Run npm run build in cxxfds-web.');
}
return response()->file($index, ['Content-Type' => 'text/html; charset=UTF-8']);
})->where('path', '.*')->name('admin.spa');