Bottelet / DaybydayCRM

DaybydayCRM an open-source CRM, to help you keep track of your daily workflow.
https://daybydaycrm.com
2.24k stars 753 forks source link

How should one create the first user? #288

Open jakubgs opened 2 years ago

jakubgs commented 2 years ago

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'=>'admin@example.org',
    '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?

designamx commented 2 years ago

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

jakubgs commented 2 years ago

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.

Bottelet commented 2 years ago

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.