Admin Panel
tests / ci (push) Canceled after 0s

This commit is contained in:
2026-09-29 14:57:37 +07:00
parent 04fbddba13
commit 8c6dad2a31
94 changed files with 4864 additions and 1151 deletions
+31
View File
@@ -1,8 +1,39 @@
<?php
use App\Enums\UserRole;
use App\Models\User;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use function Laravel\Prompts\password;
use function Laravel\Prompts\text;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
Artisan::command('admin:create', function () {
$name = text('Name', required: true);
$email = text(
'Email',
required: true,
validate: fn (string $value) => match (true) {
! filter_var($value, FILTER_VALIDATE_EMAIL) => 'Enter a valid email address.',
User::where('email', $value)->exists() => 'A user with this email already exists.',
default => null,
},
);
$password = password('Password', required: true, validate: fn (string $value) => strlen($value) < 8
? 'The password must be at least 8 characters.'
: null);
$user = User::create([
'name' => $name,
'email' => $email,
'role' => UserRole::Admin,
'password' => $password,
]);
$user->forceFill(['email_verified_at' => now()])->save();
$this->info("Admin user {$email} created.");
})->purpose('Create an admin user (public registration is disabled)');
+39 -6
View File
@@ -1,15 +1,48 @@
<?php
use App\Http\Controllers\Admin\CompanyController;
use App\Http\Controllers\Admin\ConsultationController as AdminConsultationController;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\OfficeController;
use App\Http\Controllers\Admin\ProjectController;
use App\Http\Controllers\Admin\TestimonialController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\ConsultationController;
use App\Http\Controllers\SitePageController;
use Illuminate\Support\Facades\Route;
Route::inertia('/', 'site/home')->name('home');
Route::inertia('tentang-kami', 'site/about')->name('about');
Route::inertia('jasa', 'site/services')->name('services');
Route::inertia('klien', 'site/clients')->name('clients');
Route::inertia('kontak', 'site/contact')->name('contact');
Route::controller(SitePageController::class)->group(function () {
Route::get('/', 'home')->name('home');
Route::get('tentang-kami', 'about')->name('about');
Route::get('jasa', 'services')->name('services');
Route::get('klien', 'clients')->name('clients');
Route::get('kontak', 'contact')->name('contact');
});
Route::post('konsultasi', [ConsultationController::class, 'store'])
->middleware('throttle:5,1')
->name('consultations.store');
Route::middleware(['auth', 'verified'])->group(function () {
Route::inertia('dashboard', 'dashboard')->name('dashboard');
Route::get('dashboard', DashboardController::class)->name('dashboard');
Route::prefix('admin')->name('admin.')->group(function () {
Route::resource('consultations', AdminConsultationController::class)
->only(['index', 'update', 'destroy']);
Route::resource('projects', ProjectController::class)
->only(['index', 'store', 'update', 'destroy']);
Route::resource('testimonials', TestimonialController::class)
->only(['index', 'store', 'update', 'destroy']);
Route::resource('offices', OfficeController::class)
->only(['store', 'update', 'destroy']);
Route::get('company', [CompanyController::class, 'edit'])->name('company.edit');
Route::put('company/contact', [CompanyController::class, 'updateContact'])->name('company.contact.update');
Route::resource('users', UserController::class)
->only(['index', 'store', 'update', 'destroy'])
->middleware('can:manage-users');
});
});
require __DIR__.'/settings.php';