src/Auth.php
private function resendConfirmationForColumnValue($columnName, $columnValue, callable $callback) {
		try {
			$latestAttempt = $this->db->selectRow(
				'SELECT user_id, email FROM ' . $this->makeTableName('users_confirmations') . ' WHERE ' . $columnName . ' = ? ORDER BY id DESC LIMIT 1 OFFSET 0',
				[ $columnValue ]
			);
		}
		catch (Error $e) {
			throw new DatabaseError($e->getMessage());
		}

		if ($latestAttempt === null) {
			throw new ConfirmationRequestNotFound();
		}

		$this->throttle([ 'resendConfirmation', 'userId', $latestAttempt['user_id'] ], 1, (60 * 60 * 6));
		$this->throttle([ 'resendConfirmation', $this->getIpAddress() ], 4, (60 * 60 * 24 * 7), 2);

		$this->createConfirmationRequest(
			$latestAttempt['user_id'],
			$latestAttempt['email'],
			$callback
		);
	}
private function resendConfirmationForColumnValue($columnName, $columnValue, callable $callback) {
		try {
			$latestAttempt = $this->db->selectRow(
				'SELECT user_id, email FROM ' . $this->makeTableName('users_confirmations') . ' WHERE ' . $columnName . ' = ? ORDER BY id DESC LIMIT 1 OFFSET 0',
				[ $columnValue ]
			);
		}
		catch (Error $e) {
			throw new DatabaseError($e->getMessage());
		}

		if ($latestAttempt === null) {
			throw new ConfirmationRequestNotFound();
		}

		$this->throttle([ 'resendConfirmation', 'userId', $latestAttempt['user_id'] ], 1, (60 * 60 * 6));
		$this->throttle([ 'resendConfirmation', $this->getIpAddress() ], 4, (60 * 60 * 24 * 7), 2);

		$this->createConfirmationRequest(
			$latestAttempt['user_id'],
			$latestAttempt['email'],
			$callback
		);
	}
private function resendConfirmationForColumnValue ( $ columnName , $ columnValue , callable $ callback ) { try { $ latestAttempt = $ this -> db -> selectRow ( 'SELECT user_id, email FROM ' . $ this -> makeTableName ( 'users_confirmations' ) . ' WHERE ' . $ columnName . ' = ? ORDER BY id DESC LIMIT 1 OFFSET 0' , [ $ columnValue ] ) ; } catch ( Error $ e ) { throw new DatabaseError ( $ e -> getMessage ( ) ) ; } if ( $ latestAttempt === null ) { throw new ConfirmationRequestNotFound ( ) ; } $ this -> throttle ( [ 'resendConfirmation' , 'userId' , $ latestAttempt [ 'user_id' ] ] , 1 , ( 60 * 60 * 6 ) ) ; $ this -> throttle ( [ 'resendConfirmation' , $ this -> getIpAddress ( ) ] , 4 , ( 60 * 60 * 24 * 7 ) , 2 ) ; $ this -> createConfirmationRequest ( $ latestAttempt [ 'user_id' ] , $ latestAttempt [ 'email' ] , $ callback ) ; }
Attempts to re-send an earlier confirmation request

The callback function must have the following signature:

`function ($selector, $token)`

Both pieces of information must be sent to the user, usually embedded in a link

When the user wants to verify their email address as a next step, both pieces will be required again

You must never pass untrusted input to the parameter that takes the column name

@param string $columnName the name of the column to filter by
@param mixed $columnValue the value to look for in the selected column
@param callable $callback the function that sends the confirmation request to the user
@throws ConfirmationRequestNotFound if no previous request has been found that could be re-sent
@throws TooManyRequestsException if the number of allowed attempts/requests has been exceeded
@throws AuthError if an internal problem occurred (do *not* catch)
Attempts to re - send an earlier confirmation request