From d8ac2bd61f4fb22acd9b48a428b77d5e8c0d376c Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Mon, 21 Mar 2022 14:36:18 +0100 Subject: [PATCH] #84 - fix remembering user (#89) * #84 - fix remembering user * #84 - ecs fix * #84 - fix * #84 - fix test * #84 - wip * #84 - add comment to observer * #84 - cr fix * Apply suggestions from code review Co-authored-by: Krzysztof Rewak * #84 - cr fix Co-authored-by: Krzysztof Rewak --- app/Eloquent/Observers/UserObserver.php | 15 ++++++++++++ ...927_add_password_column_in_users_table.php | 23 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 database/migrations/2022_03_21_135927_add_password_column_in_users_table.php 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"); + }); + } +};