Как добавить администратора на сайт Laravel в продакшене

Источник: «Add the First Admin User to Live Laravel Site: Two Ways»
Добавление пользователя администратора на сайт в продакшене — одна из самых распространённых вещей, которые делаются при первом развёртывание Laravel проекта на сервере. В этой статье я покажу два способа сделать это.

Вариант 1. Laravel Tinker

Все Laravel приложения включают Tinker по умолчанию, что позволяет взаимодействовать с приложением через командную строку.

Сначала войдите в консоль своего сервера и перейдите в каталог проекта.

Чтобы войти в среду Tinker, запустите Artisan команду tinker:

php artisan tinker

Чтобы создать пользователя, напишите PHP код, который хотите выполнить, в консоль, так же как при написании приложения.

use App\Models\User;
User::create(['name' => 'Admin', 'email' => 'admin@example.org', 'password' => bcrypt('secret')]);

Если у вас есть роли пользователей, вы можете назначить вновь созданного пользователя переменной, а затем синхронизировать/прикрепить роли. Например, если у вас есть отношение многие ко многим, где 1 — это идентификатор роли администратора, вы можете сделать следующее:

use App\Models\User;
$user = User::create(['name' => 'Admin', 'email' => 'admin@example.org', 'password' => bcrypt('secret')]);
$user->roles()->attach(1);

Преимущества

Недостатки

Вариант 2. Засеивание базы данных

Ещё один способ создания пользователей в системе — засеять их.

Выполните Artisan команду make:seed, чтобы создать класс Seeder.

php artisan make:seed UserSeeder

Затем обновите метод run() необходимой логикой, например:

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;

class UserSeeder extends Seeder
{
public function run(): void
{
$user = User::create([
'name' => 'Admin',
'email' => 'admin@example.org',
'password' => bcrypt('secret'),
]);

$user->roles()->attach(1);
}
}

После этого вы можете запустить этот Seeder вручную для создания пользователя, используя следующую команду:

php artisan db:seed --class=UserSeeder

Или включите Seeder в метод run() вашего класса DatabaseSeeder, чтобы всегда создавать этого пользователя при заполнении всей базы данных.

database/seeders/DatabaseSeeder.php:

public function run(): void
{
$this->call([
UserSeeder::class,
]);
}

Преимущества

Недостатки


Теперь вы можете применить это к своему сценарию.

P.S. Конечно, всегда есть третий ручной вариант: подключиться к базе данных через SQL-клиент, такой, как phpMyAdmin, и добавить данные непосредственно в БД. Это вообще не требует программирования, но довольно рискованно, потому что вы можете неправильно установить какое-то отношение или забыть зашифровать пароль. Поэтому я просто упомянул этот вариант как последнее средство, но я бы не рекомендовал его.

Дополнительные материалы

Предыдущая Статья

10 лучших SEO рекомендаций для веб-разработчиков

Следующая Статья

TypeScript или JavaScript: Что выбрать, чтобы стать веб-разработчиком