elnooronline/laravel-api-authentication

此包已废弃,不再维护。未建议替代包。

此包曾用于在RESTful API中搭建基本登录、注册和重置密码功能。

v2.0.1 2020-03-04 21:03 UTC

This package is auto-updated.

Last update: 2020-08-13 10:13:00 UTC


README

此包曾用于在RESTful API中搭建基本登录、注册和重置密码功能。

通过 Composer 安装

composer require elnooronline/laravel-api-authentication

\App\User 模型中导入以下特性

use Illuminate\Foundation\Auth\User as Authenticatable;
use Elnooronline\LaravelApiAuthentication\Models\Traits\HasApiAuthentication;

class User extends Authenticatable
{
    use HasApiAuthentication, Notifiable;
    ...
}

迁移

必须发布迁移文件以创建认证表。

php artisan vendor:publish --tag api-authentication:migration

然后运行以下命令

php artisan migrate && php artisan passport:install

配置

安装后,如果您想覆盖包中的任何内容,请运行以下命令。

php artisan vendor:publish --tag api-authentication:config
// config/api-authentication.php

return [
    /**
     * The name of user model.
     */
    'user-model' => \App\User::class,

    /**
     * Determine whether the application support register service.
     */
    'register' => true,

    /**
     * The resource transformer for the user model.
     */
    'user-resource' => \Elnooronline\LaravelApiAuthentication\Http\Resources\UserResource::class,

    /**
     * The name of onesignal player id field.
     */
    'player-id-field-name' => 'onesignal-player-id',

    /**
     * The urls of the authentications services.
     */
    'urls' => [
        'login' => '/api/login',
        'register' => '/api/register',
        'forget' => '/api/password/forget',
        'check-code' => '/api/password/check-code',
        'reset' => '/api/password/reset',
    ],

    /**
     * The authentications controllers.
     */
    'controllers' => [
        'login' => \Elnooronline\LaravelApiAuthentication\Http\Controllers\Auth\LoginController::class,
        'register' => \Elnooronline\LaravelApiAuthentication\Http\Controllers\Auth\RegisterController::class,
        'forget' => \Elnooronline\LaravelApiAuthentication\Http\Controllers\Auth\ForgotPasswordController::class,
        'reset' => \Elnooronline\LaravelApiAuthentication\Http\Controllers\Auth\ResetPasswordController::class,
    ],

    /**
     * The authentications validation requests.
     */
    'validation' => [
        'login' => \Elnooronline\LaravelApiAuthentication\Http\Requests\LoginRequest::class,
        'register' => \Elnooronline\LaravelApiAuthentication\Http\Requests\RegisterRequest::class,
        'forget' => \Elnooronline\LaravelApiAuthentication\Http\Requests\ForgetPasswordRequest::class,
        'check-code' => \Elnooronline\LaravelApiAuthentication\Http\Requests\CheckCodeRequest::class,
        'reset' => \Elnooronline\LaravelApiAuthentication\Http\Requests\ResetPasswordRequest::class,
    ],
];

如果您想添加自己的登录、注册或重置密码,应创建自定义控制器和请求并扩展包类。

示例

// app/Http/Controllers/Api/LoginController.php

namespace App\Http\Controllers\Api\Auth;

use Elnooronline\LaravelApiAuthentication\Http\Controllers\Auth\LoginController as BaseLoginController;

class LoginController extends BaseLoginController
{
    ...
}

然后更新 api-authentication.php 并替换登录控制器

return [
    ...
    'controllers' => [
        'login' => \App\Http\Controllers\Auth\LoginController::class,
        ...
    ],
    ...
];

您还可以在 api-authentication.php 配置文件中添加自己的用户资源类

return [
    ...
    'user-resource' => \App\Http\Resources\UserResource::class,
    ...
];

事件

如果您想在认证过程中添加事件,您可以在 EventServiceProvider 中附加监听器。

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    'Illuminate\Auth\Events\Registered' => [
        'App\Listeners\LogRegisteredUser',
    ],

    'Illuminate\Auth\Events\Login' => [
        'App\Listeners\LogSuccessfulLogin',
    ],

    'Illuminate\Auth\Events\Failed' => [
        'App\Listeners\LogFailedLogin',
    ],

    'Illuminate\Auth\Events\Lockout' => [
        'App\Listeners\LogLockout',
    ],
    
    'Elnooronline\LaravelApiAuthentication\Events\ResetPasswordCodeGenerated' => [
        'Elnooronline\LaravelApiAuthentication\Listeners\ResetPasswordListener',
     ],
];

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。