/** * Render user edit link * * @param Rexmac\Zyndax\Entity\User|int $user User entity or ID * @return string */ public function userEditLink($user = null) { if (is_numeric($user)) { $user = UserService::findOneById($user); } if (null === $user) { return ''; } if (!Zend_Registry::get('acl')->isUserAllowed('mvc:admin:users:edit', 'view')) { return $this->view->escape($user->getUsername()); } return sprintf('<a href="%s" title="Edit user">%s</a>', $this->view->url(array('userId' => $user->getId()), 'adminUserEdit'), $this->view->escape($user->getUsername())); }
/** * Check action * * @return void */ public function checkAction() { $request = $this->getRequest(); $params = $request->getParams(); $result = null; $user = null; if (isset($params['userId'])) { $user = UserService::findOneById($params['userId']); unset($params['userId']); } foreach ($params as $key => $value) { switch ($key) { case 'username': if (null !== $user && $user->getUsername() === $value) { $result = true; } else { $result = null === UserService::findOneByUsername(strtolower($value)) && null === AclRoleService::findOneByName(strtolower($value)); } break; case 'email': if ($user && $user->getEmail() === $value) { $result = true; } else { $result = null === UserService::findOneByEmail(strtolower($value)); } break; } if ($result !== null) { $this->getHelper('layout')->disableLayout(); $this->getHelper('ViewRenderer')->setNoRender(); #$jsonData = Zend_Json::encode($result); $jsonData = Zend_Json::encode(array($key, $result)); $this->getResponse()->setBody($jsonData); break; // Exit for-loop early } } }
/** * Login-as action * * @return void */ public function loginasAction() { $request = $this->getRequest(); if (null === ($user = UserService::findOneById($request->getParam('userId')))) { throw new Exception('Invalid user ID'); } // Need to avoid admin users if ($user->isAdmin()) { #throw new Exception('Invalid user ID'); throw new Exception('Cannot login-as admin user'); } // "Authenticate" as user $authCookieName = Zend_Registry::get('config')->session->auth->name; $ssa = new Zend_Session_Namespace($authCookieName); $ssa->loginAsUser = $user->getId(); // Track login-as event UserLoginAsEventService::create(array('user' => $this->_user, 'account' => $user, 'date' => new DateTime(), 'ip' => $this->getRequest()->getServer('REMOTE_ADDR'))); $siteDomain = str_replace('admin.', '', Zend_Registry::get('siteDomain')); return $this->_helper->getHelper('Redirector')->gotoUrl('http://' . $siteDomain . '/home'); }