Changeset 5760
- Timestamp:
- 10/30/07 08:51:16 (1 year ago)
- Files:
-
- plugins/sfGuardPlugin/README (modified) (1 diff)
- plugins/sfGuardPlugin/config/schema.xml (deleted)
- plugins/sfGuardPlugin/config/schema.yml (added)
- plugins/sfGuardPlugin/lib/model/plugin (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardGroup.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardGroupPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardGroupPermission.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardGroupPermissionPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardPermission.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardPermissionPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardRememberKey.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardRememberKeyPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUser.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUserGroup.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUserGroupPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUserPeer.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUserPermission.php (added)
- plugins/sfGuardPlugin/lib/model/plugin/PluginsfGuardUserPermissionPeer.php (added)
- plugins/sfGuardPlugin/lib/model/sfGuardGroup.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardGroupPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardGroupPermission.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardGroupPermissionPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardPermission.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardPermissionPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardRememberKey.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardRememberKeyPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUser.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUserGroup.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUserGroupPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUserPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUserPermission.php (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardUserPermissionPeer.php (modified) (1 diff)
- plugins/sfGuardPlugin/package.xml (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/sfGuardPlugin/README
r5310 r5760 327 327 === 1.1.13 PRE === 328 328 329 * francois: fixed indexes on unique columns were not unique 330 * francois: switched to YAML schema, to allow overriding by way of sfPropelAlternativeSchemaPlugin 331 * francois: added `lib/model/plugin/` classes to make the model truly extensible 332 329 333 === 1.1.12 === 330 334 plugins/sfGuardPlugin/lib/model/sfGuardGroup.php
r1949 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardGroup extends BasesfGuardGroup18 class sfGuardGroup extends PluginsfGuardGroup 19 19 { 20 public function __toString()21 {22 return $this->getName();23 }24 20 } plugins/sfGuardPlugin/lib/model/sfGuardGroupPeer.php
r3109 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardGroupPeer extends BasesfGuardGroupPeer18 class sfGuardGroupPeer extends PluginsfGuardGroupPeer 19 19 { 20 public static function retrieveByName($name)21 {22 $c = new Criteria();23 $c->add(self::NAME, $name);24 25 return self::doSelectOne($c);26 }27 20 } plugins/sfGuardPlugin/lib/model/sfGuardGroupPermission.php
r1949 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardGroupPermission extends BasesfGuardGroupPermission18 class sfGuardGroupPermission extends PluginsfGuardGroupPermission 19 19 { 20 20 } plugins/sfGuardPlugin/lib/model/sfGuardGroupPermissionPeer.php
r1949 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardGroupPermissionPeer extends BasesfGuardGroupPermissionPeer18 class sfGuardGroupPermissionPeer extends PluginsfGuardGroupPermissionPeer 19 19 { 20 20 } plugins/sfGuardPlugin/lib/model/sfGuardPermission.php
r1949 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardPermission extends BasesfGuardPermission18 class sfGuardPermission extends PluginsfGuardPermission 19 19 { 20 public function __toString()21 {22 return $this->getName();23 }24 20 } plugins/sfGuardPlugin/lib/model/sfGuardPermissionPeer.php
r3187 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardPermissionPeer extends BasesfGuardPermissionPeer18 class sfGuardPermissionPeer extends PluginsfGuardPermissionPeer 19 19 { 20 public static function retrieveByName($name)21 {22 $c = new Criteria();23 $c->add(self::NAME, $name);24 25 return self::doSelectOne($c);26 }27 20 } plugins/sfGuardPlugin/lib/model/sfGuardRememberKey.php
r3109 r5760 16 16 * @version SVN: $Id: sfGuardPermissionPeer.php 2344 2006-10-06 17:06:58Z davedash $ 17 17 */ 18 class sfGuardRememberKey extends BasesfGuardRememberKey18 class sfGuardRememberKey extends PluginsfGuardRememberKey 19 19 { 20 20 } plugins/sfGuardPlugin/lib/model/sfGuardRememberKeyPeer.php
r3109 r5760 16 16 * @version SVN: $Id: sfGuardPermissionPeer.php 2344 2006-10-06 17:06:58Z davedash $ 17 17 */ 18 class sfGuardRememberKeyPeer extends BasesfGuardRememberKeyPeer18 class sfGuardRememberKeyPeer extends PluginsfGuardRememberKeyPeer 19 19 { 20 20 } plugins/sfGuardPlugin/lib/model/sfGuardUser.php
r5193 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUser extends BasesfGuardUser18 class sfGuardUser extends PluginsfGuardUser 19 19 { 20 protected21 $profile = null,22 $groups = null,23 $permissions = null,24 $allPermissions = null;25 26 public function __toString()27 {28 return $this->getUsername();29 }30 31 public function setPassword($password)32 {33 if (!$password)34 {35 return;36 }37 38 $salt = md5(rand(100000, 999999).$this->getUsername());39 $this->setSalt($salt);40 $algorithm = sfConfig::get('app_sf_guard_plugin_algorithm_callable', 'sha1');41 $algorithmAsStr = is_array($algorithm) ? $algorithm[0].'::'.$algorithm[1] : $algorithm;42 if (!is_callable($algorithm))43 {44 throw new sfException(sprintf('The algorithm callable "%s" is not callable.', $algorithmAsStr));45 }46 $this->setAlgorithm($algorithmAsStr);47 48 parent::setPassword(call_user_func_array($algorithm, array($salt.$password)));49 }50 51 public function setPasswordBis($password)52 {53 }54 55 public function checkPassword($password)56 {57 if ($callable = sfConfig::get('app_sf_guard_plugin_check_password_callable'))58 {59 return call_user_func_array($callable, array($this->getUsername(), $password));60 }61 else62 {63 return $this->checkPasswordByGuard($password);64 }65 }66 67 public function checkPasswordByGuard($password)68 {69 $algorithm = $this->getAlgorithm();70 if (false !== $pos = strpos($algorithm, '::'))71 {72 $algorithm = array(substr($algorithm, 0, $pos), substr($algorithm, $pos + 2));73 }74 if (!is_callable($algorithm))75 {76 throw new sfException(sprintf('The algorithm callable "%s" is not callable.', $algorithm));77 }78 79 return $this->getPassword() == call_user_func_array($algorithm, array($this->getSalt().$password));80 }81 82 public function getProfile()83 {84 if (!is_null($this->profile))85 {86 return $this->profile;87 }88 89 $profileClass = sfConfig::get('app_sf_guard_plugin_profile_class', 'sfGuardUserProfile');90 if (!class_exists($profileClass))91 {92 throw new sfException(sprintf('The user profile class "%s" does not exist.', $profileClass));93 }94 95 $fieldName = sfConfig::get('app_sf_guard_plugin_profile_field_name', 'user_id');96 $profilePeerClass = $profileClass.'Peer';97 98 // to avoid php segmentation fault99 class_exists($profilePeerClass);100 101 $foreignKeyColumn = call_user_func_array(array($profilePeerClass, 'translateFieldName'), array($fieldName, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME));102 103 if (!$foreignKeyColumn)104 {105 throw new sfException(sprintf('The user profile class "%s" does not contain a "%s" column.', $profileClass, $fieldName));106 }107 108 $c = new Criteria();109 $c->add($foreignKeyColumn, $this->getId());110 111 $this->profile = call_user_func_array(array($profileClass.'Peer', 'doSelectOne'), array($c));112 113 if (!$this->profile)114 {115 $this->profile = new $profileClass();116 if (method_exists($this->profile, 'setsfGuardUser'))117 {118 $this->profile->setsfGuardUser($this);119 }120 else121 {122 $method = 'set'.call_user_func_array(array($profilePeerClass, 'translateFieldName'), array($fieldName, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_PHPNAME));123 $this->profile->$method($this->getId());124 }125 }126 127 return $this->profile;128 }129 130 public function addGroupByName($name, $con = null)131 {132 $group = sfGuardGroupPeer::retrieveByName($name);133 if (!$group)134 {135 throw new Exception(sprintf('The group "%s" does not exist.', $name));136 }137 138 $ug = new sfGuardUserGroup();139 $ug->setsfGuardUser($this);140 $ug->setGroupId($group->getId());141 142 $ug->save($con);143 }144 145 public function addPermissionByName($name, $con = null)146 {147 $permission = sfGuardPermissionPeer::retrieveByName($name);148 if (!$permission)149 {150 throw new Exception(sprintf('The permission "%s" does not exist.', $name));151 }152 153 $up = new sfGuardUserPermission();154 $up->setsfGuardUser($this);155 $up->setPermissionId($permission->getId());156 157 $up->save($con);158 }159 160 public function hasGroup($name)161 {162 if (!$this->groups)163 {164 $this->getGroups();165 }166 167 return isset($this->groups[$name]);168 }169 170 public function getGroups()171 {172 if (!$this->groups)173 {174 $this->groups = array();175 176 $c = new Criteria();177 $c->add(sfGuardUserGroupPeer::USER_ID, $this->getId());178 $ugs = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($c);179 180 foreach ($ugs as $ug)181 {182 $group = $ug->getsfGuardGroup();183 $this->groups[$group->getName()] = $group;184 }185 }186 187 return $this->groups;188 }189 190 public function getGroupNames()191 {192 return array_keys($this->getGroups());193 }194 195 public function hasPermission($name)196 {197 if (!$this->permissions)198 {199 $this->getPermissions();200 }201 202 return isset($this->permissions[$name]);203 }204 205 public function getPermissions()206 {207 if (!$this->permissions)208 {209 $this->permissions = array();210 211 $c = new Criteria();212 $c->add(sfGuardUserPermissionPeer::USER_ID, $this->getId());213 $ups = sfGuardUserPermissionPeer::doSelectJoinsfGuardPermission($c);214 215 foreach ($ups as $up)216 {217 $permission = $up->getsfGuardPermission();218 $this->permissions[$permission->getName()] = $permission;219 }220 }221 222 return $this->permissions;223 }224 225 public function getPermissionNames()226 {227 return array_keys($this->getPermissions());228 }229 230 // merge of permission in a group + permissions231 public function getAllPermissions()232 {233 if (!$this->allPermissions)234 {235 $this->allPermissions = $this->getPermissions();236 237 foreach ($this->getGroups() as $group)238 {239 foreach ($group->getsfGuardGroupPermissions() as $gp)240 {241 $permission = $gp->getsfGuardPermission();242 243 $this->allPermissions[$permission->getName()] = $permission;244 }245 }246 }247 248 return $this->allPermissions;249 }250 251 public function getAllPermissionNames()252 {253 return array_keys($this->getAllPermissions());254 }255 256 public function reloadGroupsAndPermissions()257 {258 $this->groups = null;259 $this->permissions = null;260 $this->allPermissions = null;261 }262 263 public function delete($con = null)264 {265 // delete profile if available266 try267 {268 if ($profile = $this->getProfile())269 {270 $profile->delete();271 }272 }273 catch (sfException $e)274 {275 }276 277 return parent::delete();278 }279 20 } plugins/sfGuardPlugin/lib/model/sfGuardUserGroup.php
r4939 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUserGroup extends BasesfGuardUserGroup18 class sfGuardUserGroup extends PluginsfGuardUserGroup 19 19 { 20 public function save($con = null)21 {22 parent::save($con);23 24 $this->getsfGuardUser($con)->reloadGroupsAndPermissions();25 }26 20 } plugins/sfGuardPlugin/lib/model/sfGuardUserGroupPeer.php
r3109 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUserGroupPeer extends BasesfGuardUserGroupPeer18 class sfGuardUserGroupPeer extends PluginsfGuardUserGroupPeer 19 19 { 20 20 } plugins/sfGuardPlugin/lib/model/sfGuardUserPeer.php
r3810 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUserPeer extends BasesfGuardUserPeer18 class sfGuardUserPeer extends PluginsfGuardUserPeer 19 19 { 20 public static function retrieveByUsername($username, $isActive = true)21 {22 $c = new Criteria();23 $c->add(self::USERNAME, $username);24 $c->add(self::IS_ACTIVE, $isActive);25 26 return self::doSelectOne($c);27 }28 29 20 } plugins/sfGuardPlugin/lib/model/sfGuardUserPermission.php
r4939 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUserPermission extends BasesfGuardUserPermission18 class sfGuardUserPermission extends PluginsfGuardUserPermission 19 19 { 20 public function save($con = null)21 {22 parent::save($con);23 24 $this->getsfGuardUser($con)->reloadGroupsAndPermissions();25 }26 20 } plugins/sfGuardPlugin/lib/model/sfGuardUserPermissionPeer.php
r3109 r5760 16 16 * @version SVN: $Id$ 17 17 */ 18 class sfGuardUserPermissionPeer extends BasesfGuardUserPermissionPeer18 class sfGuardUserPermissionPeer extends PluginsfGuardUserPermissionPeer 19 19 { 20 20 } plugins/sfGuardPlugin/package.xml
r5193 r5760 23 23 <active>yes</active> 24 24 </lead> 25 <developer> 26 <name>Francois Zaninotto</name> 27 <user>fzaninotto</user> 28 <email>francois.zaninotto@symfony-project.com</email> 29 <active>yes</active> 30 </developer> 25 31 <date>2007-09-19</date> 26 32 <version> 27 <release>1.1.1 2</release>33 <release>1.1.13</release> 28 34 <api>1.1.0</api> 29 35 </version> … … 42 48 <file role="data" name="config.php" /> 43 49 <!-- model --> 44 <file role="data" name="schema. xml" />50 <file role="data" name="schema.yml" /> 45 51 </dir> 46 52 … … 59 65 <dir name="lib"> 60 66 <dir name="model"> 61 <!-- sfGuardGroup model --> 67 <dir name="plugin"> 68 <file role="data" name="PluginsfGuardGroup.php" /> 69 <file role="data" name="PluginsfGuardGroupPeer.php" /> 70 <file role="data" name="PluginsfGuardGroupPermission.php" /> 71 <file role="data" name="PluginsfGuardGroupPermissionPeer.php" /> 72 <file role="data" name="PluginsfGuardPermission.php" /> 73 <file role="data" name="PluginsfGuardPermissionPeer.php" /> 74 <file role="data" name="PluginsfGuardUser.php" /> 75 <file role="data" name="PluginsfGuardUserPeer.php" /> 76 <file role="data" name="PluginsfGuardUserGroup.php" /> 77 <file role="data" name="PluginsfGuardUserGroupPeer.php" /> 78 <file role="data" name="PluginsfGuardUserPermission.php" /> 79 <file role="data" name="PluginsfGuardUserPermissionPeer.php" /> 80 <file role="data" name="PluginsfGuardRememberKey.php" /> 81 <file role="data" name="PluginsfGuardRememberKeyPeer.php" /> 82 </dir> 62 83 <file role="data" name="sfGuardGroup.php" /> 63 84 <file role="data" name="sfGuardGroupPeer.php" /> … … 89 110 <dir name="modules"> 90 111 <dir name="sfGuardAuth"> 91 <!-- sfGuardAuth module -->92 112 <file role="data" name="actions/actions.class.php" /> 93 113 <file role="data" name="config/security.yml" /> … … 99 119 100 120 <dir name="sfGuardGroup"> 101 <!-- sfGuardGroup module -->102 121 <file role="data" name="actions/actions.class.php" /> 103 122 <file role="data" name="config/generator.yml" /> … … 106 125 107 126 <dir name="sfGuardPermission"> 108 <!-- sfGuardPermission module -->109 127 <file role="data" name="actions/actions.class.php" /> 110 128 <file role="data" name="config/generator.yml" /> … … 113 131 114 132 <dir name="sfGuardUser"> 115 <!-- sfGuardUser module -->116 133 <file role="data" name="actions/actions.class.php" /> 117 134 <file role="data" name="config/generator.yml" />