* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0 */ namespace App\Actions\Fortify; use App\Models\Group; use App\Models\User; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\ValidationException; use Laravel\Fortify\Contracts\ResetsUserPasswords; class ResetUserPassword implements ResetsUserPasswords { use PasswordValidationRules; /** * Validate and reset the user's forgotten password. * * @param array $input * @throws ValidationException */ public function reset(User $user, array $input): void { Validator::make($input, [ 'password' => $this->passwordRules(), ])->validate(); $user->forceFill([ 'password' => Hash::make($input['password']), ]); $validatingGroup = cache()->rememberForever('validating_group', fn () => Group::query()->where('slug', '=', 'validating')->pluck('id')); $memberGroup = cache()->rememberForever('member_group', fn () => Group::query()->where('slug', '=', 'user')->pluck('id')); if ($user->group_id === $validatingGroup[0]) { $user->group_id = $memberGroup[0]; } if (!$user->hasVerifiedEmail()) { $user->markEmailAsVerified(); } $user->active = true; $user->save(); } }