Hi,
I’m currently working on a starter for my Kirby projects. I would like to create programmatically an admin user (credentials defined in a .env file) and pages (like home, error) at the initialization of the project.
I did something like that but don’t know really if it’s ok or if someone have a better idea.
I wonder if for example if “impersonate” will not be called on every request.
$app = new Kirby();
// ----------------------------------
$users = $app->users();
if ($users->isEmpty() || !$users->findBy('email', $_ENV['ADMIN_EMAIL'])) :
User::create([
'name' => $_ENV['ADMIN_NAME'],
'email' => $_ENV['ADMIN_EMAIL'],
'password' => $_ENV['ADMIN_PASSWORD'],
'language' => $_ENV['ADMIN_LANGUAGE'],
'role' => 'admin'
]);
endif;
// ----------------------------------
$app->impersonate('kirby', function () use($app) {
if (!$app->page('home')) :
Page::create([
'slug' => 'home',
'template' => 'home',
'draft' => false,
'content' => [
'title' => 'Home'
]
]);
endif;
if (!$app->page('error')) :
Page::create([
'slug' => 'error',
'template' => 'error',
'draft' => false,
'content' => [
'title' => 'Error'
]
]);
endif;
});
// ----------------------------------
echo $app->render();
If someone already did that, or if you have a more optimized code, feel free to share