delboy1978uk/bone-user

delboy1978uk/user与Bone框架的集成


README

Latest Stable Version Total Downloads License build status Code Coverage Scrutinizer Code Quality

Bone框架的用户注册和登录包

setup

简单地将包添加到Bone的模块配置中

<?php

// use statements here
use Bone\BoneDoctrine\BoneDoctrinePackage;
use Bone\Mail\MailPackage;
use Bone\Paseto\PasetoPackage;
use Bone\User\BoneUserPackage;
use Del\Person\PersonPackage;
use Del\UserPackage;

return [
    'packages' => [
        // packages here (order is important)...,
        MailPackage::class,
        BoneDoctrinePackage::class,
        PasetoPackage::class,
        PersonPackage::class,
        UserPackage::class,
        BoneUserPackage::class,
    ],
    // ...
];

然后,使用迁移命令设置数据库

vendor/bin/bone migrant:diff
vendor/bin/bone migrant:migrate
vendor/bin/bone migrant:generate-proxies

快速说明。如果你总是输入vendor/bin/whatever,为了避免麻烦,请将以下内容添加到你的~/.bashrc~.zshrc或其他shell文件中

export PATH=$PATH:bin:vendor/bin

然后你可以关闭并重新打开你的终端,从现在起你只需输入bone。同样,对于当前文件夹中bin/目录中的任何可执行文件。

最后设置阶段是部署公共资源(CSS、JS等)

vendor/bin/bone assets:deploy

(你添加了你的PATH,所以不需要输入vendor/bin/bone,对吧?)

使用方法

安装后,前往你的网站(默认使用Bone框架Docker开发环境(它是https://awesome.scot/user)并注册自己为用户。如果使用提供的开发环境,请检查你的MailHog服务器在https://awesome.scot:8025以查看任何发出的邮件。激活你的账户等!你可以在src/BoneUserPackage.php中的addRoutes()部分看到所有可用的端点。

授权中间件

你可以通过添加会话授权中间件Bone\User\Http\Middleware\SessionAuth来锁定路由,使其仅对已登录用户可用

$sessionAuth = $c->get(SessionAuth::class); // of course there's a use statement above, right? With the full name?
$router->map('GET', '/my/route', [MyController::class, 'whateverAction'])->middleware($sessionAuth);

一旦锁定路由,在你的控制器中,你可以通过调用

$user = $request->getAttribute('user');

还有一个名为SessionAuthRedirect的中间件类,你可以添加它,它将访问者带到登录页面,但一旦登录就会将其重定向回那里。

服务和仓库类

你还可以从你的包容器注册类中获取Del\Service\UserService以注入到你的类中。这允许你执行各种功能,其中大多数情况都已覆盖,但实际操作中允许你访问数据库仓库并保存数据。用户对象还有一个Del\Entity\Person,你也可以从容器中获取Del\Person\Service\PersonService

    /** @var UserService $userService */
    $userService = $c->get(UserService::class);
   
    /** @var PersonService $personService */
    $personService = $c->get(PersonService::class);

视图

显然,你可能不希望使用默认的带有海盗主题的Bone视图!所以请进入你的配置文件夹,覆盖视图。电子邮件模板也在这里。随意修改。

<?php

/*
 *  You can override views from vendor packages
 *  You should copy the vendor view folder into your src and tweak from there
 */
return [
    'views' => [
        'boneuser' => 'src/App/View/bone-user',
    ],
];

配置设置

如果你想在登录后进入自己的控制器,请创建一个带有键bone-user的配置,并添加你希望重定向到的URL。你还可以禁用/user/register端点,并使填写个人资料成为必需。

<?php /* config/bone-user.php */

return [
    'bone-user' => [
        'loginRedirectRoute' => '/admin',
        'enableRegistration' => true,
        'requireProfile' => false,
        'rememberMeCookie' => true
    ],
];

就这些!其余的应该可以在你的IDE中自动完成,而且都很简单!祝你玩得开心。