diff --git a/app/Eloquent/Observers/UserObserver.php b/app/Eloquent/Observers/UserObserver.php index 6921550..b241609 100644 --- a/app/Eloquent/Observers/UserObserver.php +++ b/app/Eloquent/Observers/UserObserver.php @@ -4,11 +4,26 @@ declare(strict_types=1); namespace Toby\Eloquent\Observers; +use Illuminate\Contracts\Hashing\Hasher; +use Illuminate\Support\Str; use Toby\Eloquent\Models\User; use Toby\Eloquent\Models\YearPeriod; class UserObserver { + public function __construct( + protected Hasher $hash, + ) {} + + public function creating(User $user): void + { + /** + * A random password for user is generated because AuthenticateSession middleware needs a user's password + * for some checks. Users use Google to login, so they don't need to know the password (GitHub issue #84) + */ + $user->password = $this->hash->make(Str::random(40)); + } + public function created(User $user): void { $yearPeriods = YearPeriod::all(); diff --git a/database/migrations/2022_03_21_135927_add_password_column_in_users_table.php b/database/migrations/2022_03_21_135927_add_password_column_in_users_table.php new file mode 100644 index 0000000..7dbd238 --- /dev/null +++ b/database/migrations/2022_03_21_135927_add_password_column_in_users_table.php @@ -0,0 +1,23 @@ +string("password")->nullable(); + }); + } + + public function down(): void + { + Schema::table("users", function (Blueprint $table): void { + $table->dropColumn("password"); + }); + } +};