src/AppBundle/Handler/LoginSuccessHandler.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace AppBundle\Handler;
use Biz\Role\Util\PermissionBuilder;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Topxia\Service\Common\ServiceKernel;
use Doctrine\Bundle\DoctrineBundle\Registry as Doctrine;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
/**
* Custom login listener.
*/
class LoginSuccessHandler
{
/**
* @var AuthorizationChecker
*/
private $checker;
/**
* Constructor.
*
* @param AuthorizationChecker $checker
* @param Doctrine $doctrine
*/
public function __construct(AuthorizationChecker $checker)
{
$this->checker = $checker;
}
/**
* Do the magic.
*
* @param InteractiveLoginEvent $event
*/
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
if ($this->checker->isGranted('IS_AUTHENTICATED_FULLY')) {
// user has just logged in
}
if ($this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
// user has logged in using remember_me cookie
}
// do some other magic here
$user = $event->getAuthenticationToken()->getUser();
$user->setPermissions(PermissionBuilder::instance()->getPermissionsByRoles($user->getRoles()));
$request = $event->getRequest();
$sessionId = $request->getSession()->getId();
$request->getSession()->set('loginIp', $request->getClientIp());
$this->getUserService()->markLoginInfo();
$this->getUserService()->rememberLoginSessionId($user['id'], $sessionId);
}
private function getUserService()
{
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。