/** * Confirm an email address * * @param object AuthNTokens $email * @param string $confirmationCode * @return boolean True on success * @access public * @since 6/4/08 */ public function confirmEmail(AuthNTokens $authNTokens, $confirmationCode) { $dbc = Services::getService("DatabaseManager"); $dbId = $this->_configuration->getProperty('database_id'); $authenticationTable = $this->_configuration->getProperty('authentication_table'); $usernameField = $this->_configuration->getProperty('username_field'); $passwordField = $this->_configuration->getProperty('password_field'); $query = new UpdateQuery(); $query->setTable($authenticationTable); $query->addValue("email_confirmed", "1"); $query->addWhereEqual($usernameField, $authNTokens->getUsername()); $query->addWhereEqual('confirmation_code', $confirmationCode); $result = $dbc->query($query, $dbId); if ($result->getNumberOfRows()) { $confirmed = TRUE; } else { $confirmed = FALSE; } // Log the success or failure if (Services::serviceRunning("Logging")) { $loggingManager = Services::getService("Logging"); $log = $loggingManager->getLogForWriting("Authentication"); $formatType = new Type("logging", "edu.middlebury", "AgentsAndNodes", "A format in which the acting Agent[s] and the target nodes affected are specified."); $priorityType = new Type("logging", "edu.middlebury", "Event_Notice", "Normal events."); $properties = $this->getPropertiesForTokens($authNTokens); if ($confirmed) { $item = new AgentNodeEntryItem("Visitor Registration Confirmed", "Visitor Registration Confirmed: <br/> Name: " . htmlspecialchars($properties->getProperty('name')) . " <br/> Email: " . htmlspecialchars($authNTokens->getIdentifier())); } else { $priorityType = new Type("logging", "edu.middlebury", "User_Error", "Events that indicate errors in user supplied data."); $item = new AgentNodeEntryItem("Visitor Registration Failed", "Visitor Registration email confirmation failed. Confirmation code/email mis-match: <br/> Name: " . htmlspecialchars($properties->getProperty('name')) . " <br/> Email: " . htmlspecialchars($authNTokens->getIdentifier())); } $log->appendLogWithTypes($item, $formatType, $priorityType); } return $confirmed; }
/** * Return true if a mapping between AuthNTokens and an AgentId exists for this auth * Type. * * @param object AuthNTokens $authNTokens * @param object Type $authenticationType * @return boolean * @access private * @since 3/1/05 */ function _mappingExistsForTokens(AuthNTokens $authNTokens, Type $authenticationType) { $this->_checkConfig(); $dbc = Services::getService("DatabaseManager"); $query = new SelectQuery(); $query->addTable($this->_mappingTable); $query->addTable($this->_typeTable, LEFT_JOIN, $this->_mappingTable . '.fk_type=' . $this->_typeTable . '.id'); $query->addColumn('agent_id'); $query->addColumn('token_identifier'); $query->addWhere("token_identifier='" . addslashes($authNTokens->getIdentifier()) . "'", _AND); $query->addWhere("domain='" . addslashes($authenticationType->getDomain()) . "'", _AND); $query->addWhere("authority='" . addslashes($authenticationType->getAuthority()) . "'", _AND); $query->addWhere("keyword='" . addslashes($authenticationType->getKeyword()) . "'", _AND); $result = $dbc->query($query, $this->_dbId); if ($result->getNumberOfRows() == 1) { $result->free(); return TRUE; } if ($result->getNumberOfRows() == 0) { $result->free(); return FALSE; } else { throwError(new Error("Invalid number of results: " . $result->getNumberOfRows(), "AgentTokenMappingManager", true)); } }
/** * Constructor * * @param object CASAuthNMethod $authNMethod * @param object Properties $configuration * @param optional string $directoryUrl * @return void * @access public * @since 10/5/09 */ public function __construct(CASAuthNMethod $authNMethod, Properties $configuration, $directoryUrl = null) { $this->_authNMethod = $authNMethod; $this->_directoryUrl = $directoryUrl; parent::AuthNTokens($configuration); }