123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
-
- namespace Illuminate\Auth\Console;
-
- use Illuminate\Console\Command;
- use Illuminate\Console\DetectsApplicationNamespace;
-
- class AuthMakeCommand extends Command
- {
- use DetectsApplicationNamespace;
-
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'make:auth
- {--views : Only scaffold the authentication views}
- {--force : Overwrite existing views by default}';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'Scaffold basic login and registration views and routes';
-
- /**
- * The views that need to be exported.
- *
- * @var array
- */
- protected $views = [
- 'auth/login.stub' => 'auth/login.blade.php',
- 'auth/register.stub' => 'auth/register.blade.php',
- 'auth/passwords/email.stub' => 'auth/passwords/email.blade.php',
- 'auth/passwords/reset.stub' => 'auth/passwords/reset.blade.php',
- 'layouts/app.stub' => 'layouts/app.blade.php',
- 'home.stub' => 'home.blade.php',
- ];
-
- /**
- * Execute the console command.
- *
- * @return void
- */
- public function handle()
- {
- $this->createDirectories();
-
- $this->exportViews();
-
- if (! $this->option('views')) {
- file_put_contents(
- app_path('Http/Controllers/HomeController.php'),
- $this->compileControllerStub()
- );
-
- file_put_contents(
- base_path('routes/web.php'),
- file_get_contents(__DIR__.'/stubs/make/routes.stub'),
- FILE_APPEND
- );
- }
-
- $this->info('Authentication scaffolding generated successfully.');
- }
-
- /**
- * Create the directories for the files.
- *
- * @return void
- */
- protected function createDirectories()
- {
- if (! is_dir($directory = resource_path('views/layouts'))) {
- mkdir($directory, 0755, true);
- }
-
- if (! is_dir($directory = resource_path('views/auth/passwords'))) {
- mkdir($directory, 0755, true);
- }
- }
-
- /**
- * Export the authentication views.
- *
- * @return void
- */
- protected function exportViews()
- {
- foreach ($this->views as $key => $value) {
- if (file_exists($view = resource_path('views/'.$value)) && ! $this->option('force')) {
- if (! $this->confirm("The [{$value}] view already exists. Do you want to replace it?")) {
- continue;
- }
- }
-
- copy(
- __DIR__.'/stubs/make/views/'.$key,
- $view
- );
- }
- }
-
- /**
- * Compiles the HomeController stub.
- *
- * @return string
- */
- protected function compileControllerStub()
- {
- return str_replace(
- '{{namespace}}',
- $this->getAppNamespace(),
- file_get_contents(__DIR__.'/stubs/make/controllers/HomeController.stub')
- );
- }
- }
|