*/ /** * Decorator for the member class to support OpenID authentication * * This class adds the needed fields to the default member class to support * authentication via OpenID. * * @author Markus Lanthaler array('IdentityURL' => 'Varchar(255)'), 'has_one' => array(), 'defaults' => array('IdentityURL' => null), 'indexes' => array('IdentityURL' => 'unique (IdentityURL)') ); } /** * Edit the given query object to support queries for this extension * * At the moment this method does nothing. * * @param SQLQuery $query Query to augment. */ function augmentSQL(SQLQuery &$query) { } /** * Update the database schema as required by this extension * * At the moment this method does nothing. */ function augmentDatabase() { } /** * Change the member dialog in the CMS * * This method updates the form in the member dialog to make it possible * to edit the new database fields. */ function updateCMSFields(FieldSet &$fields) { $fields->push( new HeaderField(_t('Security.OPENIDHEADER', "OpenID/i-name credentials")), "OpenIDHeader" ); $fields->push( new LiteralField("OpenIDDescription", _t('Security.OPENIDDESC',"

Make sure you enter your normalized OpenID/i-name credentials here, i.e. with protocol and trailing slash for OpenID (e.g. http://openid.silverstripe.com/).

") ) ); $fields->push( new TextField("IdentityURL", _t('Security.OPENIDURL', "OpenID URL/i-name")), "IdentityURL" ); } /** * Can the current user edit the given member? * * Only the user itself or an administrator can edit an user account. * * @return bool Returns TRUE if this member can be edited, FALSE otherwise */ function canEdit() { if($this->owner->ID == Member::currentUserID()) return true; $member = Member::currentUser(); if($member) return $member->isAdmin(); return false; } } /** * Validator of the decorator for the member class to support OpenID * authentication * * @author Markus Lanthaler ID != $id) { $field = $form->dataFieldByName('IdentityURL'); $this->owner->validationError($field->id(), _t('Security.MEMBERALREADYEXISTS', "There already exists a member with this identity URL"), "required"); return false; } return true; } } ?>