Preview: web.php
Size: 18.52 KB
/var/www/multi-event-cfp.bitkit.dk/httpdocs/routes/web.php
<?php
use App\Http\Controllers\AbstractsController;
use App\Http\Controllers\AdobeHookController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\EmailController;
use App\Http\Controllers\ScheduleEmailController;
use App\Http\Controllers\EventController;
use App\Http\Controllers\PresentationController;
use App\Http\Controllers\FileController;
use App\Http\Controllers\ScoreController;
use App\Http\Controllers\SessionController;
use App\Http\Controllers\SystemEmailController;
use App\Http\Controllers\TestController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;
use App\Models\File;
/*
|--------------------------------------------------------------------------
| 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!
|
*/
// Auth routes
Route::prefix('auth')->group(function () {
Route::post('/azure/callback', [AuthController::class, 'azureLogin']);
Route::get('login/{role}', [AuthController::class, 'login']);
Route::get('logout', [AuthController::class, 'logout']);
Route::post('forgot-password', [AuthController::class, 'generateForgotPasswordLink']);
Route::post('check-token', [AuthController::class, 'checkForgotPasswordToken']);
Route::post('reset-password', [AuthController::class, 'resetPassword']);
Route::post('event/check-user', [UserController::class, 'checkEventUser']);
Route::post('event/login-and-register', [UserController::class, 'loginAndRegisterEvent']);
Route::post('event/register', [UserController::class, 'registerEvent']);
});
Route::get('fetch/companies', [UserController::class , 'getCompanyNames']);
//metadata of event
Route::get('meta/{event}/{page?}', [EventController::class, 'meta']);
//hooks
Route::prefix('hooks')->group(function () {
//adobe hooks
Route::prefix('adobe')->group(function () {
Route::post('agreement/completed', [AdobeHookController::class, 'agreementCompleted']);
Route::get('agreement/completed', [AdobeHookController::class, 'verifyWebHook']);
});
//sendgrid hooks
Route::prefix('sendgrid')->group(function () {
Route::post('events', [\App\Http\Controllers\SendGridHookController::class, 'handleEvents']);
});
});
Route::prefix('api')->middleware('auth:sanctum')->group(function () {
Route::prefix('test')->group(function () {
Route::get('/', [TestController::class, 'test']);
Route::get('adobe-sign', [TestController::class, 'adobeSign']);
Route::get('/download-presentation-zip/{filename}', [TestController::class, 'downloadPresentationZip'])
->name('downloadPresentationZip');
Route::get('/download-user-files-zip/{filename}', [TestController::class, 'downloadUserFilesZip'])
->name('downloadUserFilesZip');
});
Route::get('wuc-migration', [TestController::class, 'wucMigration']);
Route::get('wuc-user-files', [TestController::class, 'wucUserFiles']);
Route::get('wuc-remove-files', [TestController::class, 'WucRemoveFiles']);
Route::get('/import-user-template', [UserController::class, 'importUserTemplate']);
Route::post('event/register', [UserController::class, 'authUserRegisterEvent']);
Route::post('/check-user', [UserController::class , 'checkUser'])->middleware('event.user:event_admin|event_submitter|event_reviewer');
Route::get('user', [UserController::class, 'getAuthUser']);
Route::post('/super-admin/update-email', [UserController::class, 'updateUserEmail']);
Route::prefix('user')->group(function () {
Route::get('/token', [UserController::class, 'listToken'])->middleware('event.user:event_admin');
Route::post('/token', [UserController::class, 'generateToken'])->middleware('event.user:event_admin');
Route::delete('/token/{id}', [UserController::class, 'deleteToken'])->middleware('event.user:event_admin');
Route::post('/download-files', [UserController::class, 'downloadUserFiles'])->middleware('event.user:event_admin');
Route::post('/', [UserController::class, 'createOrUpdate'])->middleware('event.user:event_admin');
Route::get('/{id}/agreement/fetch-status', [UserController::class, 'fetchAgreementStatus'])->middleware('event.user:event_admin|event_submitter');
Route::post('/agreement/fetch-multi-speakers-status', [UserController::class, 'fetchMultipleSpeakerAgreementStatus'])->middleware('event.user:event_admin');
Route::post('/agreement/fetch-multi-speakers-remind-mail', [UserController::class, 'fetchMultipleSpeakerRemindMail'])->middleware('event.user:event_admin');
Route::post('/{id}/agreement/remind', [UserController::class, 'remindAgreement'])->middleware('event.user:event_admin|event_submitter');
Route::post('/{id}/agreement/cancel', [UserController::class, 'cancelAgreement'])->middleware('event.user:event_admin');
Route::get('/{id}/agreement/download', [UserController::class, 'downloadAgreement'])->middleware('event.user:event_admin');
Route::get('/list', [UserController::class, 'list'])->middleware('event.user:event_admin');
Route::get('/super-admin/user/list', [UserController::class, 'list']);
Route::post('/list-users', [UserController::class, 'list'])->middleware('event.user:event_admin');
Route::get('/{id}', [UserController::class, 'view'])->middleware('event.user:event_admin');
Route::delete('/{id}', [UserController::class, 'deleteUser'])->middleware('event.user:event_admin');
Route::get('/event/count', [UserController::class, 'eventUserCount'])->middleware('event.user:event_admin');
Route::get('/speaker/count', [UserController::class, 'speakerCount'])->middleware('event.user:event_admin');
Route::post('/reset-password', [UserController::class, 'resetPassword'])->middleware('event.user:event_admin');
Route::post('/reset-password/un-registered', [UserController::class, 'resetPassword']);
Route::post('/send-login-info', [UserController::class, 'sendLoginInfo'])->middleware('event.user:event_admin');
Route::post('/import-user', [UserController::class, 'importUser'])->middleware('event.user:event_admin');
Route::post('/verification', [UserController::class, 'userVerification'])->middleware('event.user:event_admin');
Route::post('/presentation-request', [UserController::class, 'createCancelPresentationRequest'])->middleware('event.user:event_submitter');
//export users
Route::post('/export', [UserController::class, 'export'])->middleware('event.user:event_admin');
// update speaker order
Route::post('/update-speaker-order', [UserController::class, 'updateSpeakerOrder'])->middleware('event.user:event_admin');
// create speaker notes
Route::post('/speaker/notes', [UserController::class, 'createSpeakerNotes'])->middleware('event.user:event_admin');
// list speaker notes
Route::get('/speaker/{id}/list', [UserController::class, 'listSpeakerNotes'])->middleware('event.user:event_admin');
// download speaker notes files
Route::get('/speaker/note/{noteId}/file/{fileId}', [UserController::class, 'downloadNoteFIle'])->middleware('event.user:event_admin');
// create token for get all users in the platform
Route::post('/token/all-user/create-token', [UserController::class, 'createAllUserAccessApiToken'])->middleware('event.user:event_admin');
// list tokens for get all users in the platform
Route::get('/token/all-user/list-tokens', [UserController::class, 'listAllUserAccessApiTokens'])->middleware('event.user:event_admin');
// delete all user access token
Route::delete('/token/all-user/{id}', [UserController::class, 'deleteAllUserAccessApiToken'])->middleware('event.user:event_admin');
// get all users in the platform
Route::get('/events/users', [UserController::class, 'listAllEventsUsers'])->middleware('event.user:event_admin');
// list amend speaker terms
Route::get('/speaker/amend-speaker-term/{id}/list', [UserController::class, 'listAmendSpeakerTerm'])->middleware('event.user:event_admin');
// create update amend speaker terms
Route::post('/speaker/amend-speaker-term', [UserController::class, 'createUpdateAmendSpeakerTerm'])->middleware('event.user:event_admin');
// Global Users Directory routes
Route::get('/global/search', [UserController::class, 'globalUserSearch'])->middleware('event.user:event_admin');
Route::post('/global/add-to-event/{userId}', [UserController::class, 'addUserToEvent'])->middleware('event.user:event_admin');
Route::get('/global/autocomplete', [UserController::class, 'getAutocompleteData'])->middleware('event.user:event_admin');
});
Route::prefix('email')->group(function () {
Route::post('/send-email', [EmailController::class, 'sendEmail']);
Route::get('/list', [EmailController::class, 'list']);
Route::get('/{id}/file/{fileId}', [EmailController::class, 'downloadFile']);
Route::delete('/{id}', [EmailController::class, 'deleteEmail']);
});
Route::prefix('system-email')->group(function () {
Route::get('/list', [SystemEmailController::class, 'list']);
Route::get('/{id}', [SystemEmailController::class, 'view']);
Route::post('/edit-email', [SystemEmailController::class, 'editEmail']);
});
Route::prefix('schedule-email')->group(function () {
Route::get('/get-form', [ScheduleEmailController::class, 'getScheduleMailForm']);
Route::get('/list', [ScheduleEmailController::class, 'list']);
Route::get('/{id}', [ScheduleEmailController::class, 'view']);
Route::post('/save-form', [ScheduleEmailController::class, 'createOrUpdate']);
Route::delete('/{id}', [ScheduleEmailController::class, 'deleteScheduleEmail']);
});
Route::prefix('email-log')->group(function () {
Route::get('/list', [App\Http\Controllers\EmailLogController::class, 'list']);
Route::get('/{id}', [App\Http\Controllers\EmailLogController::class, 'show']);
Route::post('/{id}/retry', [App\Http\Controllers\EmailLogController::class, 'retry']);
Route::post('/bulk-retry', [App\Http\Controllers\EmailLogController::class, 'bulkRetry']);
Route::delete('/{id}', [App\Http\Controllers\EmailLogController::class, 'destroy']);
Route::delete('/', [App\Http\Controllers\EmailLogController::class, 'destroy']);
});
Route::prefix('score')->group(function () {
Route::post('/', [ScoreController::class, 'submitScore']);
Route::post('/bulk', [ScoreController::class, 'submitScores']);
Route::delete('/{id}', [ScoreController::class, 'deleteScore']);
Route::post('/export', [ScoreController::class, 'export']);
Route::get('/count', [ScoreController::class, 'getMarkedCount']);
});
Route::prefix('abstract')->group(function () {
//reports
Route::get('/reports', [AbstractsController::class, 'reports']);
//export abstracts
Route::post('/export', [AbstractsController::class, 'export']);
//export abstracts to pdf
Route::post('/pdf-export', [AbstractsController::class, 'pdfExport']);
Route::post('/', [AbstractsController::class, 'createOrUpdateAbstract']);
Route::get('/list', [AbstractsController::class, 'list']);
Route::get('/{id}', [AbstractsController::class, 'view']);
Route::delete('/{id}', [AbstractsController::class, 'deleteAbstract']);
Route::post('/{id}/edit-request', [AbstractsController::class, 'editRequest']);
Route::post('/{id}/handle/edit-request', [AbstractsController::class, 'handleEditRequest']);
Route::post('/{id}/handle/selection-status', [AbstractsController::class, 'handleSelectionStatus']);
Route::post('/{id}/handle/presentation-type', [AbstractsController::class, 'handlePresentationType']);
Route::post('/{id}/handle/presentation-invitation', [AbstractsController::class, 'handlePresentationInvitation']);
Route::post('/{id}/email/accepted-info', [AbstractsController::class, 'emailSelectionStatus']);
Route::get('/{id}/file/{fileId}', [AbstractsController::class, 'downloadFile']);
});
Route::prefix('session')->group(function () {
Route::get('/list', [SessionController::class, 'list']);
Route::get('/chair-person/list', [SessionController::class, 'listChairPersons']);
Route::post('/chair-person/create', [SessionController::class, 'createOrUpdateChairPerson']);
Route::delete('/chair-person/delete/{id}', [SessionController::class, 'deleteChairPerson']);
Route::get('/sessions-dates', [SessionController::class, 'sessionsDates']);
Route::post('/', [SessionController::class, 'createOrUpdate']);
Route::post('/bulk', [SessionController::class, 'bulkCreateOrUpdate'])->middleware('event.user:event_admin');
Route::post('/publish', [SessionController::class, 'publish']);
Route::post('/{id}/toggle-exclude-from-print', [SessionController::class, 'toggleExcludeFromPrint']);
Route::get('/published-sessions', [SessionController::class, 'publishedSessions']);
Route::get('/previous-published-sessions', [SessionController::class, 'previousPublishedSessions']);
Route::delete('/{id}', [SessionController::class, 'delete'])->middleware('event.user:event_admin');
Route::get('/filter/options', [SessionController::class, 'getFilterOptions']);
Route::get('/{id}', [SessionController::class, 'view']);
Route::get('/my-sessions/list', [SessionController::class, 'getMySessions']);
Route::get('/category-settings/list', [SessionController::class, 'getAllSessionFormSettingsCategories']);
Route::get('/room-type-options/list', [SessionController::class, 'getSessionRoomAndTypeOptions']);
Route::post('/export', [SessionController::class, 'exportSessions']);
//slot apis
Route::prefix('slot')->group(function () {
Route::get('/list', [SessionController::class, 'listSlots']);
});
});
Route::prefix('presentation')->group(function () {
Route::get('/{id}/file/{fileId}', [PresentationController::class, 'downloadFile']);
Route::get('/{id}/file/{fileId}/preview', [PresentationController::class, 'previewFile']);
Route::get('/file-access/{fileId}', [PresentationController::class, 'serveFile'])->name('file.access')->middleware('signed');
Route::get('/{id}/comment/{commentId}/file/{fileId}', [PresentationController::class, 'downloadCommentFIle']);
Route::get('/{id}/comment/list', [PresentationController::class, 'listComments']);
Route::post('/{id}/comment', [PresentationController::class, 'createOrUpdateComment']);
Route::get('/presentation-filter-data', [PresentationController::class, 'fetchFilterDetails']);
Route::post('/', [PresentationController::class, 'createOrUpdate']);
Route::post('/written-paper', [PresentationController::class, 'writtenPaper']);
Route::get('/list', [PresentationController::class, 'list']);
Route::post('/download', [PresentationController::class, 'download']);
Route::get('/list/count', [PresentationController::class, 'count']);
Route::get('/{id}', [PresentationController::class, 'view']);
Route::delete('/{id}', [PresentationController::class, 'delete']);
Route::post('/{id}/assign-reviewer', [PresentationController::class, 'assignReviewer']);
Route::delete('/{id}/remove-reviewer', [PresentationController::class, 'removeReviewer']);
Route::delete('/{id}/remove-presenter', [PresentationController::class, 'removePresenter']);
Route::post('/{id}/edit-request', [PresentationController::class, 'editRequest']);
Route::post('/{id}/handle/edit-request', [PresentationController::class, 'handleEditRequest']);
Route::post('/{id}/written-paper/handle/edit-request', [PresentationController::class, 'handleWrittenPaperEditRequest']);
Route::post('/{id}/reviewer-accept', [PresentationController::class, 'handleReviewerApprovedRequest']);
});
Route::prefix('event')->group(function () {
Route::post('create', [EventController::class, 'create']);
Route::post('update/{id}', [EventController::class, 'update']);
Route::delete('delete/{id}', [EventController::class, 'delete']);
Route::get('list', [EventController::class, 'list']);
Route::get('{id}', [EventController::class, 'view']);
Route::post('publish/{id}', [EventController::class, 'publish']);
Route::get('counts/{id}', [EventController::class, 'eventCounts']);
Route::post('/update-status', [EventController::class, 'updateStatus']); // New route for updating event status
Route::get('/download/template/{fileId}', [EventController::class, 'downloadTemplateFile'])->middleware('event.user:event_admin|event_submitter|event_reviewer');
});
Route::prefix('submitter')->middleware('event.user:event_submitter|event_reviewer')->group(function () {
Route::post('edit/user', [UserController::class, 'updateSubmitter']);
});
});
Route::get('/schedule/cron/{id}', function ($id) {
if($id == config('app.cron_key')){
Artisan::call('schedule:run');
}else{
Log::channel('schedule_mail')->info('invalid request..!');
abort(404);
}
});
Route::get('/download-attachment/{file_id}', function ($file_id) {
$file = File::findOrFail($file_id);
$filePath = storage_path("app/{$file->filepath}{$file->save_name}");
if (!file_exists($filePath)) {
abort(404, 'File not found');
}
return response()->download($filePath, $file->filename);
})->name('downloadAttachment')->middleware('signed');
// Secure file access - MUST be before catch-all route
Route::get('/api/secure-file/{file_id}', [FileController::class, 'secureFileAccess']);
// Apply SlugRedirect middleware only to specific slugs
Route::get('{slug}/{any}', function () {
return view('index');
})->where(['slug' => 'adipec-downstream-2025', 'any' => '.*'])->middleware('slug.redirect');
Route::get('/{any}', function () {
return view('index');
})->where('any', '.*');
Directory Contents
Dirs: 0 × Files: 4