diff --git a/src/app/Console/Commands/MakeAdminCommand.php b/src/app/Console/Commands/MakeAdminCommand.php new file mode 100644 index 0000000..740ce67 --- /dev/null +++ b/src/app/Console/Commands/MakeAdminCommand.php @@ -0,0 +1,71 @@ +argument('email'); + $name = $this->option('name') ?? $this->ask('Enter admin name', 'Admin'); + $password = $this->option('password') ?? $this->secret('Enter password'); + + // Validate email + $validator = Validator::make( + ['email' => $email], + ['email' => 'required|email|unique:users,email'] + ); + + if ($validator->fails()) { + $this->error('Validation failed:'); + foreach ($validator->errors()->all() as $error) { + $this->error(" - {$error}"); + } + return Command::FAILURE; + } + + // Validate password + if (strlen($password) < 8) { + $this->error('Password must be at least 8 characters.'); + return Command::FAILURE; + } + + // Create user + $user = User::create([ + 'name' => $name, + 'email' => $email, + 'password' => Hash::make($password), + 'email_verified_at' => now(), + ]); + + // Assign admin role + $user->assignRole('admin'); + + $this->info("✅ Admin user created successfully!"); + $this->table( + ['Field', 'Value'], + [ + ['Name', $name], + ['Email', $email], + ['Role', 'admin'], + ] + ); + + $this->newLine(); + $this->info("Login at: /admin"); + + return Command::SUCCESS; + } +}