aiyuchen/wordpress-auth-provider

为Laravel身份验证系统提供WordPress用户的包。

v2.1.3 2022-07-24 19:03 UTC

This package is auto-updated.

Last update: 2024-09-24 23:51:36 UTC


README

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

安装

要安装此包,您需要Laravel 5.*

Laravel 6.*

  • Laravel 6.1
  • PHP >= 7.2

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

composer require aiyuchen/wordpress-auth-provider

或将其添加到composer.json中,然后运行composer update来安装它

"require": {
    "aiyuchen/wordpress-auth-provider": "*",
}

配置

一旦您通过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,
],

配置

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 guard来加载驱动程序。

示例

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许可证