public function savesfGuardUserPermissionList($con = null) { if (!$this->isValid()) { throw $this->getErrorSchema(); } if (!isset($this->widgetSchema['sf_guard_user_permission_list'])) { // somebody has unset this widget return; } if (null === $con) { $con = $this->getConnection(); } $c = new Criteria(); $c->add(sfGuardUserPermissionPeer::PERMISSION_ID, $this->object->getPrimaryKey()); sfGuardUserPermissionPeer::doDelete($c, $con); $values = $this->getValue('sf_guard_user_permission_list'); if (is_array($values)) { foreach ($values as $value) { $obj = new sfGuardUserPermission(); $obj->setPermissionId($this->object->getPrimaryKey()); $obj->setUserId($value); $obj->save(); } } }
/** * Executes apply action * * @param sfRequest $request A request object */ public function executeApply(sfRequest $request) { $this->form = $this->newForm('sfApplyApplyForm'); if ($request->isMethod('post')) { $parameter = $request->getParameter('sfApplyApply'); $this->form->bind($request->getParameter('sfApplyApply')); if ($this->form->isValid()) { $guid = "n" . self::createGuid(); $this->form->setValidate($guid); $this->form->save(); // Generate unique token based on random time list($usec, $sec) = explode(" ", microtime()); $rand_num = substr(sha1((int) ($usec * 1000000 * ($sec / 1000000))), 0, 20); // Retrieve current user $user = $this->form->getObject(); $now = date("Y-m-d H:i:s"); // Create new entry into sfGuardUserProfile table $profileObject = new sfGuardUserProfile(); $profileObject->setUserId($user->getId()); $profileObject->setToken($rand_num); $profileObject->setSecurityLevel(sfConfig::get('app_security_level_new_user')); $userPermission = Doctrine_Core::getTable("sfGuardPermission")->findOneByName(sfConfig::get('app_permission_new_user')); if (empty($userPermission)) { return; } // Create new entry into sfGuardUserPermission table $permissionObject = new sfGuardUserPermission(); $permissionObject->setUserId($user->getId()); $permissionObject->setPermissionId($userPermission->getId()); $permissionObject->setCreatedAt($now); $permissionObject->setUpdatedAt($now); $userGroup = Doctrine_Core::getTable("sfGuardGroup")->findOneByName(sfConfig::get('app_project_group')); if (empty($userGroup)) { return; } // Create new entry into sfGuardUserGroup table $groupObject = new sfGuardUserGroup(); $groupObject->setUserId($user->getId()); $groupObject->setGroupId($userGroup->getId()); $groupObject->setCreatedAt($now); $groupObject->setUpdatedAt($now); try { // Send mail $this->sendVerificationMail($user); // Save tables entries $profileObject->save(); $permissionObject->save(); $groupObject->save(); return 'After'; } catch (Exception $e) { $groupObject->delete(); $permissionObject->delete(); $profileObject->delete(); $user->delete(); throw $e; // You could re-throw $e here if you want to // make it available for debugging purposes return 'MailerError'; } } } }
public function executePermissions(sfWebRequest $request) { $module = 'sfGuardUser'; if (!in_array($module, array_keys(sfPlop::getSafePluginModules()))) { $this->redirect('@sf_plop_dashboard'); } if ($request->isMethod(sfRequest::POST)) { if ($request->isXmlHttpRequest()) { $this->setTemplate('ajaxPermissions'); $this->setLayout(false); } $group_id = $request->getParameter('g'); $user_id = $request->getParameter('u'); $permission_id = $request->getParameter('p'); if ($group_id) { $group_exists = sfPlopGuard::groupExists($group_id); if (!$group_exists && $request->isXmlHttpRequest()) { return sfView::ERROR; } else { if (!$group_exists) { $this->redirect('@sf_plop_dashboard_permissions'); } } } if ($user_id) { $user_exists = sfPlopGuard::userExists($user_id); if (!$user_exists && $request->isXmlHttpRequest()) { return sfView::ERROR; } else { if (!$user_exists) { $this->redirect('@sf_plop_dashboard_permissions'); } } } if (isset($group_exists) && isset($user_exists)) { $user_group = sfGuardUserGroupPeer::retrieveByPK($user_id, $group_id); if ($user_group) { $user_group->delete(); } else { $user_group = new sfGuardUsergroup(); $user_group->setUserId($user_id); $user_group->setGroupId($group_id); $user_group->save(); $this->getResponse()->setStatusCode(201); } } if ($permission_id) { if ($permission_id == 'super') { if (!sfPlopGuard::isLastSuperAdminUser($user_id)) { $user = sfGuardUserPeer::retrieveByPK($user_id); if ($user->getIsSuperAdmin()) { $user->setIsSuperAdmin(false); } else { $user->setIsSuperAdmin(true); } $user->save(); } else { $this->getResponse()->setStatusCode(202); return sfView::ERROR; } } else { if (!is_int($permission_id)) { $permission_exists = sfPlopGuard::permissionExists($permission_id); if (!$permission_exists) { $modules = sfPlop::getSafePluginModules(); if ($request->isXmlHttpRequest() && !isset($modules[$permission_id])) { return sfView::ERROR; } elseif (!isset($modules[$permission_id])) { $this->redirect('@sf_plop_dashboard_permissions'); } else { $module = $modules[$permission_id]; } $permission = new sfGuardPermission(); $permission->setName($permission_id); $permission->setDescription($module['name']); $permission->save(); $permission_id = $permission->getId(); $this->getResponse()->setStatusCode(201); } else { $permission_id = sfPlopGuard::getPermission($permission_id)->getId(); } } else { $permission_exists = sfPlopGuard::permissionExists($permission_id); if (!$permission_exists && $request->isXmlHttpRequest()) { return sfView::ERROR; } else { if (!$permission_exists) { $this->redirect('@sf_plop_dashboard_permissions'); } } } if (isset($user_exists)) { $user_permission = sfGuardUserPermissionPeer::retrieveByPK($user_id, $permission_id); if ($user_permission) { $user_permission->delete(); } else { $user_permission = new sfGuardUserPermission(); $user_permission->setUserId($user_id); $user_permission->setPermissionId($permission_id); $user_permission->save(); $this->getResponse()->setStatusCode(201); } } elseif (isset($group_exists)) { $group_permission = sfGuardGroupPermissionPeer::retrieveByPK($group_id, $permission_id); if ($group_permission) { $group_permission->delete(); } else { $group_permission = new sfGuardGroupPermission(); $group_permission->setGroupId($group_id); $group_permission->setPermissionId($permission_id); $group_permission->save(); $this->getResponse()->setStatusCode(201); } } } } if (!$request->isXmlHttpRequest()) { $this->redirect('@sf_plop_dashboard_permissions'); } } $this->groups = sfPlopGuard::getAllGroups(); $this->users = sfPlopGuard::getAllUsers(); $this->permissions = sfPlopGuard::getAllPermissions(); }
/** * * @param sfWebRequest $request * @param LdapForm $form */ protected function processLdap(sfWebRequest $request, LdapForm $form) { $form->bind($request->getParameter('signin')); if ($form->isValid()) { $values = $form->getValues(); // Check if user already exists in the DB $user = Doctrine::getTable('sfGuardUser')->findOneByUsername($values["username"]); // If not, create an account for him if (empty($user)) { $datetime = date("Y-m-d H:i:s"); // Create entry in sfGuardUser $sfGuardUser = new sfGuardUser(); $sfGuardUser->setEmailAddress($values["username"]); $sfGuardUser->setUsername($values["username"]); $sfGuardUser->setFirstName($values["firstname"]); $sfGuardUser->setLastName($values["lastname"]); $sfGuardUser->setCreatedAt($datetime); $sfGuardUser->setUpdatedAt($datetime); $sfGuardUser->save(); // Additional informations for user's profile $sfGuardUserProfile = new sfGuardUserProfile(); $sfGuardUserProfile->setUserId($sfGuardUser->getId()); $sfGuardUserProfile->setToken(MiscUtils::generateToken()); $sfGuardUserProfile->setSecurityLevel(sfConfig::get("app_security_level_new_user", 0)); $sfGuardUserProfile->save(); $permission = Doctrine_Core::getTable("sfGuardPermission")->findOneByName(sfConfig::get("app_permission_new_user", "User")); if (!$permission) { $this->getUser()->setFlash("error", "Unable to set permissions for this account! Contact your administrator."); $sfGuardUserProfile->delete(); $sfGuardUser->delete(); return; } // Give basic permissions for user $sfGuardPermission = new sfGuardUserPermission(); $sfGuardPermission->setUserId($sfGuardUser->getId()); $sfGuardPermission->setPermissionId($permission->getId()); $sfGuardPermission->setCreatedAt($datetime); $sfGuardPermission->setUpdatedAt($datetime); $sfGuardPermission->save(); $userGroup = Doctrine_Core::getTable("sfGuardGroup")->findOneByName(sfConfig::get("app_project_group")); if (!$userGroup) { $this->getUser()->setFlash("error", "Unable to set project group for this account! Contact your administrator."); $sfGuardUserProfile->delete(); $sfGuardUser->delete(); $sfGuardPermission->delete(); return; } // Create new entry into sfGuardUserGroup table $sfGuardGroup = new sfGuardUserGroup(); $sfGuardGroup->setUserId($sfGuardUser->getId()); $sfGuardGroup->setGroupId($userGroup->getId()); $sfGuardGroup->setCreatedAt($datetime); $sfGuardGroup->setUpdatedAt($datetime); $sfGuardGroup->save(); $user = $sfGuardUser; } $this->getUser()->signIn($user, array_key_exists('remember', $values) ? $values['remember'] : false); // Set the tow previous referer to the same value for: // 1) redirect to previous user's location // 2) avoid redirect loop in signin $this->getUser()->setReferer($this->getUser()->getReferer()); // Redirect to referer return $this->redirect($this->getUser()->getReferer()); } }