smartins/user-module

安装: 9

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

类型:laravel-module

dev-master 2019-12-06 19:41 UTC

This package is auto-updated.

Last update: 2024-09-07 06:14:48 UTC


README

此模块是一个处理API中用户的框架,包括一般所需的功能。它具有注册、认证(默认和Facebook)、密码重置和确认邮件的端点。

该模块是为与Laravel Modules 包一起使用的。这是一个组织Laravel项目结构的优秀包,可以在 modules 中而不是在 app 文件夹中保留文件。

特性

  • 注册用户
  • 使用 Laravel Passport 进行OAuth 2认证(默认和Facebook)。
  • 重置密码
    • 您可以使用路由在 浏览器 上重置密码
      • GET : /password/reset 显示链接请求表单
      • POST : /password/email 发送重置链接邮件
      • GET : /password/reset/{token} 显示重置表单
      • POST : /password/reset 重置密码
    • 或使用API端点
  • 确认账户

使用的包

端点

  • POST: /v1/users - 创建用户
  • POST: /v1/oauth/token - 默认登录和Facebook登录
  • GET : /v1/users/{id} - 获取一个用户
  • POST: /v1/password/email - 发送密码重置邮件
  • POST: /v1/password/reset - 重置密码
  • GET : /v1/account/verify/{token} - 确认邮件

更多详情请查看 Swagger 文档

事件

  • Illuminate\Auth\Events\Registered 当用户被注册时
  • Illuminate\Auth\Events\PasswordReset 当重置密码时

配置

先决条件

安装

  • 在您的项目上安装用户模块
$ composer require smartins/user-module

该模块必须位于您的项目的 Modules\User 文件夹中

数据库

重要:请注意,默认情况下,项目中的迁移 create_users_tablecreate_password_resets_table 已经存在。为了使模块正确工作,请删除默认迁移以创建 userspassword_resets_table,并使用用户模块中的迁移。您可以在 Modules\User\Database\Migrations 中查看表结构。

  • 发布模块迁移
$ php artisan module:publish-migration User
  • 并运行迁移
$ php artisan migrate

将创建 userspassword_resetsLaravel Passport 迁移的迁移将执行。恭喜!您已经拥有了用于注册、确认账户、登录(OAuth2 - 默认和Facebook)以及重置用户密码的数据库结构!

API认证(Laravel Passport)

下一步是配置 Laravel Passport

  • 运行 passport:install 命令以生成生成安全访问令牌所需的加密密钥。复制“密码授予”客户端,它将用于生成访问令牌
$ php artisan passport:install
  • 接下来,您应该在 AuthServiceProvider 的 boot 方法中调用 Passport::routes 方法。此方法将注册生成访问令牌和吊销访问令牌、客户端和个人访问令牌所需的必要路由
<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
}
  • 最后,在你的配置文件 config/auth.php 中,应将 api 身份验证守卫的驱动选项设置为 passport。这将指示你的应用程序在验证传入的 API 请求时使用 Passport 的 TokenGuard。
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

在完成 Laravel Passport 配置后,你的 Laravel 项目必须准备好进行用户验证!

社交认证(Laravel Socialite

要使用 Facebook 身份验证,你必须进行更多一些的配置。

  • 你还需要添加应用程序使用的 OAuth 服务的凭证。这些凭证应放置在你的配置文件 config/services.php 中,并应使用键 facebook、twitter、linkedin、google、github 或 bitbucket,具体取决于应用程序所需的服务提供者。要使用 Facebook,请放置以下代码
'facebook' => [
    'client_id' => env('FACEBOOK_ID'),
    'client_secret' => env('FACEBOOK_SECRET'),
    'redirect' => env('FACEBOOK_REDIRECT'),
],
  • 在 .env 文件中设置你的 Facebook 应用程序密钥
FACEBOOK_ID=YourFacebookId
FACEBOOK_SECRET=YourFacebookSecret
FACEBOOK_REDIRECT=YourFacebookRedirectUrl

好了,这就是添加社交登录支持到你的 API 所需的所有配置!要添加更多的社交提供者,你只需要更新类 Modules\User\Services\SocialUserResolver.php,设置你的其他提供者。更多关于 Passport Social Grant 包的详细信息。

重置密码和电子邮件确认

电子邮件

要使重置密码和电子邮件确认功能正确工作,你需要配置 Laravel API 的发送电子邮件和队列。别担心,这很简单!

  • 在你的 .env 文件中设置你的电子邮件配置。你可以在开发阶段使用 mailtrap
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

注意:有关在 Laravel 应用程序中配置发送电子邮件的更多说明,请参阅 Laravel 文档

队列

对我来说,配置 Laravel 中的队列最简单的方法是使用 database 驱动程序。基本上,你只需要准备你的数据库,然后它就准备好了!

  • 为了使用数据库队列驱动程序,你需要一个 database 表来保存作业。要生成创建此表的迁移,请运行 Artisan 命令 queue:table。一旦迁移被创建,你可以使用 migrate 命令迁移你的数据库。
$ php artisan queue:table

$ php artisan migrate
  • 现在你只需要启动一个进程来监视你的队列。你可以使用 Artisan 命令 queue:work
$ php artisan queue:work

使用示例

你可以看到一个配置了 User 模块的骨架项目。了解 Laravel Robust