desmart/password-reset

Laravel 的密码重置机制。为 https://github.com/DeSmart/laravel-vanilla 设计。

1.0.1 2017-06-22 07:50 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:35:40 UTC


README

Laravel 的密码重置机制。该软件包提供端点和逻辑,以简单易行的方式允许您的应用程序用户重置他们的密码。

安装

使用 Composer 安装软件包

composer require desmart/password-reset

config/app.php 中注册软件包的服务提供者

'providers' => [
        (...)
        DeSmart\PasswordReset\ServiceProvider::class,
    ],

运行 Artisan 的 vendor:publish 命令

php artisan vendor:publish

这将复制 password-reset.php 配置文件和 password_reset_init.blade.php 邮件模板到正确的目录,让您可以进行修改。

运行数据库迁移

php artisan migrate

提供的迁移将删除当前 password_resets 表(如果存在)并创建一个新的表。

配置

为了使软件包能够向用户发送电子邮件,必须配置 Laravel 的邮件发送器。为此,请在 .env 文件中填写以下值

MAIL_DRIVER=<DRIVER>            # e.g. smtp
MAIL_HOST=<HOST>                # e.g. smtp.gmail.com
MAIL_PORT=<PORT>                # e.g. 587
MAIL_USERNAME=<USERNAME>        # e.g. mailer@foobar.com
MAIL_PASSWORD=<PASSWORD>
MAIL_ENCRYPTION=<ENCRYPTION>    # e.g. tls
MAIL_FROM_EMAIL=<EMAIL>         # e.g. mailer@foobar.com
MAIL_FROM_NAME=<FROM>           # MyCompany

您需要在 config/mail.php 中进行一些更改(因为该文件有一些硬编码的默认值)

'from' => [
    'address' => env('MAIL_FROM_EMAIL', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

这样,我们就可以出发了 :)

使用方法

该软件包提供了三个用于处理密码重置的路由

  • POST /api/users/password-reset
  • GET /api/users/password-reset
  • PUT /api/users/password-reset

如您所见,所有请求的 URI 都是相同的 - 只有动词不同。

让我们简要地了解一下这些路由。

启动密码重置

发送一个 POST 请求将执行以下操作

  • 为用户创建密码重置令牌
  • 向用户发送包含密码重置链接的电子邮件

如果用户不存在,将抛出异常。

此操作所需的字段

  • 电子邮件

验证令牌

此路由是可选的,但您可能希望使用它以确保用户的 ID 和密码重置令牌都是有效的。

发送一个 GET 请求将执行以下操作

  • 检查给定的用户 ID 和密码重置令牌是否都有效

如果

  • 用户不存在
  • 令牌无效

此操作所需的字段

  • 用户 ID
  • 令牌

设置新密码

发送一个 PUT 请求将执行以下操作

  • 使用 Laravel 的密码散列器为用户设置新密码
  • 删除密码重置令牌,以便它不能再使用

如果

  • 用户不存在
  • 令牌无效
  • 密码太短(最小 6 个字符)
  • 密码确认与密码不匹配

此操作所需的字段

  • 用户 ID
  • 令牌
  • 密码
  • 密码确认

自定义行为

您几乎可以更改任何内容以满足您的需求。

该软件包假设您使用默认的用户模型。如果您想使用自定义模型,请更改 password-reset.php 配置文件。

该文件还包含有关用于密码重置的模型和密码重置链接模式的信息,这些信息包含在发送给用户的电子邮件中。

如果您需要更改验证器或处理器,您始终可以编写自己的 自定义服务提供者,将您的类绑定到适当的接口。

如果您不喜欢软件包提供的路由,请创建自己的服务提供者,删除路由加载部分并定义自己的路由。

更改您想要的 :)

注意

该软件包没有单元测试,很抱歉 :(: 如果您能提供任何测试,那将非常棒。