🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:web.php
<?php use App\Http\Controllers\ProfileController; use App\Http\Controllers\ClientController; use App\Http\Controllers\AdminController; use App\Http\Controllers\TechLeadController; use App\Http\Controllers\DeveloperController; use App\Http\Controllers\SalesController; use App\Models\ProjectResource; use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; // ─── Public Website ─── Route::get('/', function () { return view('pages.home'); })->name('home'); Route::get('/about', function () { return view('pages.about'); })->name('about'); Route::get('/services', function () { return view('pages.services'); })->name('services'); Route::get('/pricing', function () { return view('pages.pricing'); })->name('pricing'); Route::get('/contact', function () { return view('pages.contact'); })->name('contact'); // ─── Authenticated Routes ─── Route::middleware(['auth'])->group(function () { // ── Client Routes ── Route::get('/dashboard', [ClientController::class, 'dashboard'])->name('dashboard'); Route::post('/client/requirement', [ClientController::class, 'storeRequirement'])->name('client.requirement.store'); Route::get('/client/project/{project}/media', [ClientController::class, 'media'])->name('client.media'); Route::post('/client/project/{project}/media', [ClientController::class, 'storeMedia'])->name('client.media.upload'); Route::post('/client/project/{project}/media/record', [ClientController::class, 'storeRecording'])->name('client.media.record'); Route::delete('/client/media/{media}', [ClientController::class, 'deleteMedia'])->name('client.media.delete'); Route::get('/client/project/{project}/resources', [ClientController::class, 'resources'])->name('client.resources'); // ── Admin Routes ── Route::prefix('admin')->name('admin.')->middleware('role:Admin')->group(function () { Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard'); Route::get('/projects', [AdminController::class, 'projects'])->name('projects'); Route::post('/project', [AdminController::class, 'storeProject'])->name('project.store'); Route::post('/project/{project}/assign-techlead', [AdminController::class, 'assignTechLead'])->name('project.assign-techlead'); Route::get('/leads', [AdminController::class, 'leads'])->name('leads'); Route::get('/financials', [AdminController::class, 'financials'])->name('financials'); Route::post('/expense', [AdminController::class, 'storeExpense'])->name('expense.store'); Route::get('/domains', [AdminController::class, 'domains'])->name('domains'); Route::get('/attendance', [AdminController::class, 'attendance'])->name('attendance'); // Quotation Routes Route::get('/quotations', [AdminController::class, 'quotations'])->name('quotations'); Route::post('/quotation', [AdminController::class, 'storeQuotation'])->name('quotation.store'); Route::get('/quotation/{quotation}', [AdminController::class, 'showQuotation'])->name('quotation.show'); Route::post('/quotation/{quotation}/send', [AdminController::class, 'sendQuotation'])->name('quotation.send'); // Agreement Routes Route::get('/agreements', [AdminController::class, 'agreements'])->name('agreements'); Route::post('/agreement', [AdminController::class, 'storeAgreement'])->name('agreement.store'); Route::get('/agreement/{agreement}', [AdminController::class, 'showAgreement'])->name('agreement.show'); Route::post('/agreement/{agreement}/send', [AdminController::class, 'sendAgreement'])->name('agreement.send'); // Payment Routes Route::get('/payments', [AdminController::class, 'payments'])->name('payments'); Route::post('/payment', [AdminController::class, 'storePayment'])->name('payment.store'); Route::post('/payment/{payment}/confirm', [AdminController::class, 'confirmPayment'])->name('payment.confirm'); Route::post('/payment/{payment}/reject', [AdminController::class, 'rejectPayment'])->name('payment.reject'); // Password Change Route::put('/password', [AdminController::class, 'updatePassword'])->name('password.update'); }); // ── Tech Lead Routes ── Route::prefix('techlead')->name('techlead.')->middleware('role:Tech Lead')->group(function () { Route::get('/dashboard', [TechLeadController::class, 'dashboard'])->name('dashboard'); Route::post('/project/{project}/assign', [TechLeadController::class, 'assignProject'])->name('project.assign'); Route::get('/project/{project}', [TechLeadController::class, 'showProject'])->name('project.show'); Route::post('/project/{project}/credential', [TechLeadController::class, 'storeCredential'])->name('project.credential.store'); Route::post('/credential/{credential}/assign', [TechLeadController::class, 'assignCredential'])->name('credential.assign'); Route::post('/requirement/{requirement}/approve', [TechLeadController::class, 'approveRequirement'])->name('requirement.approve'); Route::post('/requirement/{requirement}/reject', [TechLeadController::class, 'rejectRequirement'])->name('requirement.reject'); Route::get('/education', [TechLeadController::class, 'education'])->name('education'); Route::post('/education', [TechLeadController::class, 'storeEducation'])->name('education.store'); Route::get('/leads', [TechLeadController::class, 'leads'])->name('leads'); // Project Resources Route::get('/project/{project}/resources', [TechLeadController::class, 'resources'])->name('project.resources'); Route::post('/project/{project}/resources', [TechLeadController::class, 'storeResource'])->name('resource.store'); Route::delete('/resource/{resource}', [TechLeadController::class, 'deleteResource'])->name('resource.delete'); }); // ── Developer Routes ── Route::prefix('developer')->name('developer.')->middleware('role:Developer')->group(function () { Route::get('/dashboard', [DeveloperController::class, 'dashboard'])->name('dashboard'); Route::post('/task/{task}/accept', [DeveloperController::class, 'acceptTask'])->name('task.accept'); Route::post('/task/{task}/complete', [DeveloperController::class, 'completeTask'])->name('task.complete'); Route::post('/clock-in', [DeveloperController::class, 'clockIn'])->name('clock-in'); Route::post('/clock-out', [DeveloperController::class, 'clockOut'])->name('clock-out'); }); // ── Sales Routes ── Route::prefix('sales')->name('sales.')->middleware('role:Sales')->group(function () { Route::get('/dashboard', [SalesController::class, 'dashboard'])->name('dashboard'); Route::post('/lead', [SalesController::class, 'storeLead'])->name('lead.store'); Route::put('/lead/{lead}', [SalesController::class, 'updateLead'])->name('lead.update'); }); }); // ─── Profile Routes ─── Route::middleware('auth')->group(function () { Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::post('/profile/photo', [ProfileController::class, 'updatePhoto'])->name('profile.photo.update'); Route::delete('/profile/photo', [ProfileController::class, 'removePhoto'])->name('profile.photo.remove'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); // ─── Resource Download (authenticated) ─── Route::middleware('auth')->group(function () { Route::get('/resources/{resource}/download', function (ProjectResource $resource) { $user = auth()->user(); $project = $resource->project; $canDownload = $user->hasRole('Admin') || $user->hasRole('Tech Lead') || $user->id === $project->tech_lead_id || ($user->id === $project->client_id && $resource->is_downloadable && $project->status === 'completed'); if (!$canDownload) { abort(403); } if (!Storage::disk('public')->exists($resource->file_path)) { return redirect()->back()->with('error', 'File not found.'); } return Storage::disk('public')->download($resource->file_path, $resource->title . '_' . basename($resource->file_path)); })->name('resources.download'); }); require __DIR__.'/auth.php';
Save Changes
Cancel
Create New File
Create New Folder