DaybydayCRM icon indicating copy to clipboard operation
DaybydayCRM copied to clipboard

How should one create the first user?

Open jakubgs opened this issue 3 years ago • 3 comments

I understand from the docs that it is recommended to create the database schema by calling:

php artisan migrate --seed

https://github.com/Bottelet/DaybydayCRM/wiki/Install https://github.com/Bottelet/DaybydayCRM/wiki/Install-using-Docker

But is the --seed part necessary? I tried using it without --seed and then creating an admin user with:

php artisan tinker --execute="
  DB::table('users')->insert([
    'name'=>'admin',
    'email'=>'[email protected]',
    'password'=>Hash::make('super-secret')
  ]);
"

But when I try to login using that user I get:

ErrorException
Trying to get property 'country' of non-object
at app/Repositories/Format/GetDateFormat.php:17

But if I try to create the same user after using migrate with --seed I get:

ErrorException
Trying to get property 'name' of non-object (View: /var/www/html/resources/views/navigation/topbar/user-profile.blade.php)
at resources/views/navigation/topbar/user-profile.blade.php:20

So how am I supposed to do this? Should this even work without --seed? And if not, how should I create the first user?

I was thinking of updating the seeded admin this way:

php artisan tinker --execute="
  User::where('id',1)->update(array(
    'name'=>'{{ daybyday_crm_admin_user_name | mandatory }}',
    'email'=>'{{ daybyday_crm_admin_user_email | mandatory }}',
    'password'=>Hash::make('{{ daybyday_crm_admin_user_pass | mandatory }}')
  ));
"

Does this make sense?

jakubgs avatar Jan 19 '22 13:01 jakubgs

did you tried seeding the settings first? the missing country field comes from the settings model

designamx avatar Jan 26 '22 03:01 designamx

Yes, I tried both, as you can see from my issue description.

It appears seeding the database is necessary, but it is not doable multiple times, so I have to do an SQL query first - in my case SELECT name FROM users; - in order to check if the database was already seeded, and then I call php artisan db:seed --force --no-interaction , because otherwise it would fail during multiple Ansible runs.

It would be much better if there was an php artisan user:add command.

jakubgs avatar Jan 26 '22 08:01 jakubgs

Hi @jakubgs You are right for the production you have to set up by hand. a command to do it would be cool. And I'll gladly accept a PR for it. But for now, it's either by hand DB insert or tinker. Or use db:seed and create and change the user that is created by default.

Bottelet avatar Jan 26 '22 17:01 Bottelet