ahsankhatri/wordpress-auth-provider

一个为 Laravel 认证系统提供 WordPress 用户的软件包。

v2.2.3 2021-02-09 11:27 UTC

This package is auto-updated.

Last update: 2024-09-09 19:27:02 UTC


README

Latest Stable Version Total Downloads Build Status Scrutinizer Code Quality Code Intelligence Status License

安装

要安装此软件包,您需要

使用 composer 安装此软件包是最佳方式。运行

composer require ahsankhatri/wordpress-auth-provider

或者将其添加到 composer.json 中然后运行 composer update

"require": {
    "ahsankhatri/wordpress-auth-provider": "^2.0",
}

设置

一旦您通过 composer 安装了此软件包,请确保按照以下步骤进行配置。

注册认证保护器。

config/auth.php
'guards' => [
    ...,
    'wordpress' => [
        'driver' => 'session',
        'provider' => 'wordpress',
    ],
'providers' => [
    ...,
    'wordpress' => [
        'driver' => 'eloquent.wordpress',
        'model' => MrShan0\WordpressAuth\Models\WordpressUser::class,
    ],
'passwords' => [
    ...,
    'wordpress' => [
        'provider' => 'wordpress',
        'table' => 'password_resets',
        'expire' => 60,
    ],

发布配置文件(可选)

php artisan vendor:publish --provider="MrShan0\WordpressAuth\WordpressAuthServiceProvider"

它将发布配置文件(config/wordpress-auth.php),您可以在其中定义自己的连接类型,例如 wp-mysql。如果您在 WordPress 表中使用前缀,请确保在 config/database.php 中填写 prefix 以用于 wp_ 前缀。

例如

'wp-mysql' => [
    'driver' => 'mysql',
    'host' => env('WP_DB_HOST', '127.0.0.1'),
    'port' => env('WP_DB_PORT', '3306'),
    'database' => env('WP_DB_DATABASE', 'forge'),
    'username' => env('WP_DB_USERNAME', 'forge'),
    'password' => env('WP_DB_PASSWORD', ''),
    'unix_socket' => env('WP_DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => 'wp_',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
],

如果使用 Laravel v7,请添加以下选项(可选)

    // ...
    'url' => env('DATABASE_URL'),
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],

配置

password_resets 表(来自 Laravel 默认认证机制)需要存储重置密码令牌。如果您没有 password_resets 表,则使用此迁移代替

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePasswordResetsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('password_resets');
    }
}

扩展

或者,如果您想使用自定义用户模型,则应该让它扩展 MrShan0\WordpressAuth\Models\WordpressUser,并在 config/auth.php 中的 providers -> wordpress -> model 下指定您的模型名称。

定制

如果您已重命名 WordPress 数据库中的 user_email 列,则需要首先发布此软件包的配置(如果您尚未这样做),如上所述扩展模型,并确保您已在 $fillable 属性和用于认证脚手架和发送通知的 config/wordpress-auth.php 配置文件中覆盖了您的更改。

用法

您需要显式定义 wordpress 保护器 以加载驱动程序。

示例

Auth::guard('wordpress')->loginUsingId(5);

// or login using email and password
Auth::guard('wordpress')->attempt([
    'user_email' => 'demo@example.com',
    'user_pass' => 'quickbrownfox'
]);

// get user object
Auth::guard('wordpress')->user();

// Update wordpress compatible password
$user->user_pass = app('wordpress-auth')->make('new_password');
$user->save();

// logout
Auth::guard('wordpress')->logout();

您也可以更改 config/auth.php 中的默认保护器,那么您的代码将如下所示

Auth::loginUsingId(5);

如果您没有设置默认保护器并且想要利用 Laravel 中的 密码重置(认证脚手架),您可能需要在 Auth/ForgotPasswordController.phpAuth/ResetPasswordController.php 中显式定义 guardbroker,如下所示

/**
 * Get the broker to be used during password reset.
 *
 * @return \Illuminate\Contracts\Auth\PasswordBroker
 */
public function broker()
{
    return \Password::broker('wordpress');
}

/**
 * Get the guard to be used during password reset.
 *
 * @return \Illuminate\Contracts\Auth\StatefulGuard
 */
protected function guard()
{
    return \Auth::guard('wordpress');
}

变更日志

CHANGELOG

鸣谢

感谢 Laravel 的社区。

版权和许可

版权(c)2016 Ahsaan Muhammad YousufMIT 许可证