mindtwo/px-user-laravel

用于处理Laravel的PX用户认证的包。

2.7.2 2024-09-19 12:23 UTC

README

Latest Version on Packagist Software License Total Downloads

安装

您可以通过composer安装此包

composer require mindtwo/px-user-laravel

如何使用?

发布配置

要发布模块配置文件,只需运行以下命令

php artisan vendor:publish px-user

这会将 px-user.php 配置文件发布到您的项目配置文件夹。

配置包

之后,您应该在.env文件中添加以下键

  • PX_USER_M2M
  • PX_USER_TENANT
  • PX_USER_DOMAIN

这些键将自动填充相应的配置值。

在您的配置中,您还可以找到以下键

stage 它将使用您的APP_ENV变量,以及 px_user_cache_time,它简单地决定了包允许缓存用户数据多长时间(以分钟为单位)。

准备用户模型

首先,您需要向您的用户表添加一个名为 px_user_id 的列。此值用于检索缓存的用户数据。

这是必要的,因为PX用户只能允许我们缓存用户数据,而不能将其存储在数据库中,我们依赖于缓存数据。这是使用Laravel Cache 门面完成的。为了无缝地将数据集成到您的 User 模型中使用,该包提供了一个特质。

use mindtwo\PxUserLaravel\Traits\UseUserDataCache;

class User extends Model
{
    use UseUserDataCache;
}

此特质重写了模型的 getAttribute($name) 方法,因此即使您的用户表中没有lastname列,您也可以使用 $user->lastname

登录用户

要登录用户,该包提供了一个名为 PxUserLoginAction 的操作。在控制器中使用此操作以从PX用户API检索用户数据。

以下是一个此类控制器的示例

use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use mindtwo\PxUserLaravel\Actions\PxUserLoginAction;

class LoginController extends Controller
{
    public function __construct(
        protected PxUserLoginAction $pxUserLoginAction,
    ) {
    }

    /**
     * @param  Request  $request
     * @return \Illuminate\Http\JsonResponse
     *
     * @throws Exception
     */
    public function login(Request $request)
    {
        // received token auth data via PX User widgets
        $tokenData = $request->only([
            'access_token',
            'access_token_lifetime_minutes',
            'access_token_expiration_utc',
            'refresh_token',
            'refresh_token_lifetime_minutes',
            'refresh_token_expiration_utc',
        ]);

        $result = $this->pxUserLoginAction->execute($tokenData);

        return response()->json(['success' => $result]);
    }
}

如果 $result 的值为true,您现在可以通过Laravel的 Auth 门面访问已认证的用户。

更新日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 info@mindtwo.de 反馈,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。