public function onAuthenticationSuccess(Request $request, TokenInterface $token)
 {
     $username = $token->getUser()->getUsername();
     $user = new UserModel();
     $website = Website::get();
     if (!$user->readByUserName($username) or $user->role != SystemRoles::SYSTEM_ADMIN and !($user->siteRole->offsetExists($website->domain) and $user->siteRole[$website->domain] != SiteRoles::NONE)) {
         return $this->httpUtils->createRedirectResponse($request, '/app/logout');
     }
     $request->getSession()->set('user_id', $user->id->asString());
     $request->getSession()->set('user', array('username' => $username));
     $projectId = $user->getDefaultProjectId($website->domain);
     if ($projectId) {
         $request->getSession()->set('projectId', $projectId);
     }
     $referer = $this->determineTargetUrl($request);
     if ($referer and strpos($referer, '/app/') !== false) {
         return $this->httpUtils->createRedirectResponse($request, $referer);
     } elseif ($projectId) {
         $project = ProjectModel::getById($projectId);
         $url = '/app/' . $project->appName . '/' . $projectId;
         return $this->httpUtils->createRedirectResponse($request, $url);
     } else {
         return $this->httpUtils->createRedirectResponse($request, '/');
     }
 }