@@ -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
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user