Registrieren Sie manuell einen Benutzer in Laravel

Lesezeit: 4 Minuten

Benutzer-Avatar
Matt Ellis

Ist es möglich, einen Benutzer manuell zu registrieren (mit artisan?) Statt über die Auth-Registrierungsseite?

Ich brauche nur eine Handvoll Benutzerkonten und habe mich gefragt, ob es eine Möglichkeit gibt, diese zu erstellen, ohne die Registrierungscontroller und -ansichten einrichten zu müssen.

  • Durch basteln … php Handwerker basteln

    – Merkur

    5. März 2017 um 21:30 Uhr


Benutzer-Avatar
Christoffer Tyrefors

Ich denke, Sie möchten dies einmalig tun, sodass Sie nichts Ausgefallenes wie das Erstellen eines Artisan-Befehls usw. benötigen. Ich würde vorschlagen, einfach zu verwenden php artisan tinker (großartiges Tool!) und fügen Sie die folgenden Befehle pro Benutzer hinzu:

$user = new App\User();
$user->password = Hash::make('the-password-of-choice');
$user->email="[email protected]";
$user->name="My Name";
$user->save();

  • Nein, dies ist kein handwerklicher Befehl. Das ist verwenden ein Handwerkerkommando.

    – Christoffer Tyrefors

    2. März 2016 um 17:52 Uhr

  • Ja, das ist ziemlich Zen. Vielen Dank. @maiorano84 es ist dieses Paket in L5 (laravel/framework/composer.json) github.com/bobthecow/psysh

    – Francesco de Guytenaere

    2. März 2016 um 17:58 Uhr


  • Wenn Ihr Projekt auch Namen erfordert, verwenden Sie die Zeile $user->name = 'John Doe'; Vor dem save() Linie.

    – Celsius1414

    21. Juni 2017 um 20:21 Uhr


  • Möglicherweise müssen Sie auch den Benutzernamen festlegen $user->username = 'my username'; Vor $user->save()

    – Wesley Gonçalves

    27. Juni 2019 um 17:06 Uhr


  • Laravel 8: $user = new App\Models\User();

    – tertek

    3. März 2021 um 21:46 Uhr

Dies ist ein alter Beitrag, aber wenn jemand dies mit der Befehlszeile in Laravel 5. * tun möchte, ist dies ein einfacher Weg:

php artisan tinker

Geben Sie dann ein (durch Ihre Daten ersetzen):

DB::table('users')->insert(['name'=>'MyUsername','email'=>'[email protected]','password'=>Hash::make('123456')])

  • Dies ist die richtige Antwort

    – Vishalknishad

    5. April um 6:53

Ja, die beste Option ist, einen Seeder zu erstellen, damit Sie ihn immer wiederverwenden können.

Das ist zum Beispiel mein UserTableSeeder:

class UserTableSeeder extends Seeder {

public function run() {

    if(env('APP_ENV') != 'production')
    {
        $password = Hash::make('secret');

        for ($i = 1; $i <= 10; $i++)
        {
            $users[] = [
                'email' => 'user'. $i .'@myapp.com',
                'password' => $password
            ];
        }

        User::insert($users);
    }
}

Nachdem Sie diesen Seeder erstellt haben, müssen Sie ihn ausführen composer dumpautoloadund dann in Ihrem database/seeds/DatabaseSeeder.php Folgendes hinzufügen:

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('UserTableSeeder');
     }
}

Jetzt können Sie endlich verwenden php artisan db:seed --class=UserTableSeeder jedes Mal, wenn Sie Benutzer in die Tabelle einfügen müssen.

  • Meine Laravel-Version ist 5.4 und es ist kein ‘Composer Dumpautoload’ erforderlich und es muss nicht einmal UserTableSeeder in DatabaseSeeder aufgerufen werden. Habe gerade den Befehl “php artisan db:seed –class=UserTableSeeder” verwendet, nachdem du die Klasse “UserTableSeeder” als deine erstellt hast.

    – Avnish alok

    11. September 2018 um 15:40 Uhr


  • Dies wurde 2016 mit Laravel 5.2 benötigt.

    – Benutzer2094178

    12. September 2018 um 0:06 Uhr

  • Nur eine Anmerkung: Wenn Sie einen Seeder wie diesen verwenden (mit der Absicht der Wiederverwendung), werden Sie Ihr Passwort mit dieser Lösung höchstwahrscheinlich im Klartext in einem Git-Repo speichern. Gehen Sie vorsichtig vor und abstrahieren Sie Ihr Passwort in eine Umgebungsvariable.

    – Sean Halls

    2. Dezember 2018 um 7:15 Uhr


Benutzer-Avatar
Francesco de Guytenaere

Ja, Sie können ganz einfach eine Datenbank schreiben Sämaschine und säen Sie Ihre Benutzer auf diese Weise.

Benutzer-Avatar
oseinow

Sie können verwenden Modellfabriken um ein paar Benutzerkonten zu generieren, um damit zu arbeiten. Schreiben ein Sämaschine wird die Arbeit auch erledigen.

Benutzer-Avatar
NikoHood

Sie können auch einen neuen Konsolenbefehl erstellen, der über die Befehlszeile aufgerufen werden kann. Dies ist besonders nützlich, wenn Sie bei Bedarf neue Benutzer erstellen möchten.

Dieses Beispiel nutzt Laravel verstärken Sie können aber auch Ihre eigene Benutzerregistrierungslogik verwenden.

Erstellen Sie zunächst eine neue Konsolenbefehl:

php artisan make:command CreateUserCommand

Fügen Sie dann die Implementierung hinzu:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Actions\Fortify\CreateNewUser;

class CreateUserCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature="user:create {--u|username= : Username of the newly created user.} {--e|email= : E-Mail of the newly created user.}";

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Manually creates a new laravel user.';

    /**
     * Execute the console command.
     * https://laravel.com/docs/9.x/artisan
     *
     * @return int
     */
    public function handle()
    {
        // Enter username, if not present via command line option
        $name = $this->option('username');
        if ($name === null) {
            $name = $this->ask('Please enter your username.');
        }

        // Enter email, if not present via command line option
        $email = $this->option('email');
        if ($email === null) {
            $email = $this->ask('Please enter your E-Mail.');
        }

        // Always enter password from userinput for more security.
        $password = $this->secret('Please enter a new password.');
        $password_confirmation = $this->secret('Please confirm the password');

        // Prepare input for the fortify user creation action
        $input = [
            'name' => $name,
            'email' => $email,
            'password' => $password,
            'password_confirmation' => $password_confirmation
        ];

        try {
            // Use fortify to create a new user.
            $new_user_action = new CreateNewUser();
            $user = $new_user_action->create($input);
        }
        catch (\Exception $e) {
            $this->error($e->getMessage());
            return;
        }

        // Success message
        $this->info('User created successfully!');
        $this->info('New user id: ' . $user->id);
    }
}

Sie können den Befehl ausführen über:

php artisan user:create -u myusername -e [email protected]

Ich empfehle, das Passwort immer über die Benutzereingabe abzufragen, nicht als Parameter für sicherheits Gründe.

1355560cookie-checkRegistrieren Sie manuell einen Benutzer in Laravel

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy