'Varchar(160)', 'Salt' => 'Varchar(50)', 'PasswordEncryption' => 'Varchar(50)', ); private static $has_one = array( 'Member' => 'SilverStripe\\Security\\Member' ); private static $table_name = "MemberPassword"; /** * Log a password change from the given member. * Call MemberPassword::log($this) from within Member whenever the password is changed. * * @param Member $member */ public static function log($member) { $record = new MemberPassword(); $record->MemberID = $member->ID; $record->Password = $member->Password; $record->PasswordEncryption = $member->PasswordEncryption; $record->Salt = $member->Salt; $record->write(); } /** * Check if the given password is the same as the one stored in this record. * See {@link Member->checkPassword()}. * * @param String $password Cleartext password * @return Boolean */ public function checkPassword($password) { $e = PasswordEncryptor::create_for_algorithm($this->PasswordEncryption); return $e->check($this->Password, $password, $this->Salt, $this->Member()); } }