PHP Classes

File: build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml

Recommend this page to a friend!
  Classes of Cyril Ogana   PHP User Credentials   build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml   Download  
File: build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP User Credentials
Implement password authentication policies
Author: By
Last change:
Date: 7 years ago
Size: 284,464 bytes
 

Contents

Class file image Download
<?xml version="1.0"?> <source xmlns="http://xml.phpdox.net/token"> <file xmlns="http://xml.phpdox.net/src" path="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/abstractclass" file="UserCredentialAbstract.php" realpath="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/abstractclass/UserCredentialAbstract.php" size="35781" time="2015-07-18T03:41:36+03:00" unixtime="1437180096" sha1="100187d05e8a9f28bd997a7edafbca00a6acf58e" relative="abstractclass/UserCredentialAbstract.php"/> <line no="1"> <token name="T_OPEN_TAG">&lt;?php</token> </line> <line no="2"> <token name="T_NAMESPACE">namespace</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">cymapgt</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">core</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">application</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">authentication</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">UserCredential</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">abstractclass</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="3"/> <line no="4"> <token name="T_USE">use</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">cymapgt</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Exception</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="5"> <token name="T_USE">use</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Phpass</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Strength</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="6"/> <line no="7"> <token name="T_DOC_COMMENT">/**</token> </line> <line no="8"> <token name="T_DOC_COMMENT"> * This package implements user password policy and credential management</token> </line> <line no="9"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="10"> <token name="T_DOC_COMMENT"> * @category security</token> </line> <line no="11"> <token name="T_DOC_COMMENT"> * @package cymapgt.core.application.authentication.UserCredential</token> </line> <line no="12"> <token name="T_DOC_COMMENT"> * @copyright Copyright (c) 2015 Cymap</token> </line> <line no="13"> <token name="T_DOC_COMMENT"> * @author Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="14"> <token name="T_DOC_COMMENT"> * @abstract</token> </line> <line no="15"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="16"> <token name="T_DOC_COMMENT"> * - See http://www.owasp.org/images/0/08/OWASP_SCP_Quick_Reference_Guide_v2.pdf </token> </line> <line no="17"> <token name="T_DOC_COMMENT"> * (authentication section)</token> </line> <line no="18"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="19"/> <line no="20"> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_CLASS">class</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialAbstract</token> </line> <line no="21"> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="22"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_userProfile</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//Array containing user information to use in the class</token> </line> <line no="23"> <token name="T_WHITESPACE"> </token> </line> <line no="24"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_baseEntropySetting</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//This is the default entropy setting</token> </line> <line no="25"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_baseEntropyOverride</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//A flag to turn off base entropy enforcement </token> </line> <line no="26"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_udfEntropySetting</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//A variable to store the user defined entropy</token> </line> <line no="27"/> <line no="28"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_basePasswordPolicy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//Base password policy maintained by UserCredential class</token> </line> <line no="29"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$_udfPasswordPolicy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//Udf password policy input by the user</token> </line> <line no="30"> <token name="T_WHITESPACE"> </token> </line> <line no="31"> <token name="T_WHITESPACE"> </token> </line> <line no="32"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">/*</token> </line> <line no="33"> <token name="T_COMMENT"> * Constructor method</token> </line> <line no="34"> <token name="T_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token> </line> <line no="35"> <token name="T_COMMENT"> * </token> </line> <line no="36"> <token name="T_COMMENT"> * @param array userProfile - array of user credential information</token> </line> <line no="37"> <token name="T_COMMENT"> */</token> </line> <line no="38"> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">__construct</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="39"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_initialize</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="40"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="41"> <token name="T_WHITESPACE"> </token> </line> <line no="42"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="43"> <token name="T_DOC_COMMENT"> * Initialize the classes default settings (base entropy)</token> </line> <line no="44"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token> </line> <line no="45"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="46"> <token name="T_DOC_COMMENT"> * @param array /ArrayAccess userProfile</token> </line> <line no="47"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="48"> <token name="T_DOC_COMMENT"> * @access private</token> </line> <line no="49"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="50"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_initialize</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="51"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_initializeProfile</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="52"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_initializeBaseEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="53"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_initializeBasePasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="54"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="55"> <token name="T_WHITESPACE"> </token> </line> <line no="56"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/** </token> </line> <line no="57"> <token name="T_DOC_COMMENT"> * initializes the user profiles data as per the user credentials provided to the constructor method</token> </line> <line no="58"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="59"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token> </line> <line no="60"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="61"> <token name="T_DOC_COMMENT"> * @param array / ArrayAccess $userProfile</token> </line> <line no="62"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="63"> <token name="T_DOC_COMMENT"> * @access private</token> </line> <line no="64"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="65"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_initializeProfile</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="66"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that user profile has the correct information</token> </line> <line no="67"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="68"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="69"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="70"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> </line> <line no="71"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhash'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="72"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_string</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhash'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="73"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="74"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="75"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'account_state'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="76"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="77"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="78"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="79"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The user profile is not properly initialized'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1000</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="80"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="81"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$userProfile</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="82"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="83"/> <line no="84"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="85"> <token name="T_DOC_COMMENT"> * Initialize entopy requirements to recommended default base entropy as per OWASP</token> </line> <line no="86"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="87"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="88"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="89"> <token name="T_DOC_COMMENT"> * @access private</token> </line> <line no="90"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="91"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_initializeBaseEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="92"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//initialize if not already initialized as array</token> </line> <line no="93"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="94"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="95"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="96"/> <line no="97"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">8</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//minimum password length</token> </line> <line no="98"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//minimum characters to repeat consecutively</token> </line> <line no="99"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//requirement and length for various character types</token> </line> <line no="100"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_COMMA">,</token> </line> <line no="101"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> </line> <line no="102"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="103"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> </line> <line no="104"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_COMMA">,</token> </line> <line no="105"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_WHITESPACE"> </token> </line> <line no="106"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="107"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> </line> <line no="108"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_COMMA">,</token> </line> <line no="109"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> </line> <line no="110"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="111"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> </line> <line no="112"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_COMMA">,</token> </line> <line no="113"> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_WHITESPACE"> </token> <token name="T_DOUBLE_ARROW">=&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> </line> <line no="114"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="115"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropyOverride</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//override the reommended settings?</token> </line> <line no="116"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_setUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="117"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="118"> <token name="T_WHITESPACE"> </token> </line> <line no="119"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="120"> <token name="T_DOC_COMMENT"> * Initialize policy requirements to recommended default base entropy as per OWASP</token> </line> <line no="121"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="122"> <token name="T_DOC_COMMENT"> * 2014-02-11</token> </line> <line no="123"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="124"> <token name="T_DOC_COMMENT"> * @access private</token> </line> <line no="125"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="126"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_initializeBasePasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="127"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">3</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//count</token> </line> <line no="128"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">45</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//days</token> </line> <line no="129"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">5</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//count</token> </line> <line no="130"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">600</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//seconds</token> </line> <line no="131"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_setUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="132"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="133"> <token name="T_WHITESPACE"> </token> </line> <line no="134"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="135"> <token name="T_DOC_COMMENT"> * Get the base entropy data structure</token> </line> <line no="136"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="137"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="138"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="139"> <token name="T_DOC_COMMENT"> * @return array / Object</token> </line> <line no="140"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="141"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="142"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="143"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="144"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getBaseEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="145"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="146"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropySetting</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="147"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="148"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="149"> <token name="T_WHITESPACE"> </token> </line> <line no="150"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="151"> <token name="T_DOC_COMMENT"> * Get the base password policy</token> </line> <line no="152"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="153"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="154"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="155"> <token name="T_DOC_COMMENT"> * @return array / Object</token> </line> <line no="156"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="157"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="158"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="159"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="160"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getBasePasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="161"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="162"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_basePasswordPolicy</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="163"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="164"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> </line> <line no="165"/> <line no="166"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="167"> <token name="T_DOC_COMMENT"> * Set the user defined entropy setting</token> </line> <line no="168"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="169"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="170"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="171"> <token name="T_DOC_COMMENT"> * @param array / object entropyObj - array or object implementing ArrayAccess</token> </line> <line no="172"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="173"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="174"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="175"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="176"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_setUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="177"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//initialize if not already initialized as array</token> </line> <line no="178"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="179"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> </line> <line no="180"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_object</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="181"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_AND">&amp;&amp;</token> </line> <line no="182"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_WHITESPACE"> </token> <token name="T_INSTANCEOF">instanceof</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">ArrayAccess</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="183"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="184"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="185"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="186"/> <line no="187"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate the array / object</token> </line> <line no="188"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="189"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_object</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="190"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_INSTANCEOF">instanceof</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">ArrayAccess</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="191"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="192"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The entropy object should be an array or implement ArrayAccess interface'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1001</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="193"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="194"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="195"/> <line no="196"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that minimum password len has the correct indices, then set it</token> </line> <line no="197"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="198"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> </line> <line no="199"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="200"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The minimum password length hasn\'t been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1002</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="201"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="202"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="203"/> <line no="204"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that minimum allowed password characters to repeat has been set</token> </line> <line no="205"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="206"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="207"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="208"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The minimum allowed consecutive character repetition hasn\'t been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1003</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="209"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="210"> <token name="T_WHITESPACE"> </token> </line> <line no="211"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="212"> <token name="T_WHITESPACE"> </token> </line> <line no="213"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that uppercase snippet has correct indices, then set it</token> </line> <line no="214"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="215"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="216"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="217"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_bool</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="218"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="219"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="220"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="221"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The uppercase settings must be an array containing toggle and min upper length'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1004</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="222"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="223"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="224"/> <line no="225"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that lowercase snippet has correct indices, then set it</token> </line> <line no="226"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="227"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="228"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="229"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_bool</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="230"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="231"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="232"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="233"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The lowercase settings must be an array containing toggle and min lower length'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1005</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="234"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="235"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="236"/> <line no="237"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that numeric chars snippet has correct indices, then set it</token> </line> <line no="238"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="239"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="240"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="241"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_bool</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="242"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="243"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="244"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="245"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The numeric settings must be an array containing toggle and min lower length'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1006</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="246"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="247"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="248"/> <line no="249"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that special chars snippet has correct indices, then set it</token> </line> <line no="250"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="251"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="252"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="253"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_bool</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="254"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="255"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="256"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="257"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'the uppercase settings must be an array containing toggle and min upper length'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1007</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="258"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="259"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="260"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="261"> <token name="T_WHITESPACE"> </token> </line> <line no="262"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="263"> <token name="T_DOC_COMMENT"> * Set the user defined password policy</token> </line> <line no="264"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="265"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="266"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="267"> <token name="T_DOC_COMMENT"> * @param array / object entropyObj - array or object implementing ArrayAccess</token> </line> <line no="268"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="269"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="270"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="271"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="272"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_setUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="273"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//initialize if not already initialized as array</token> </line> <line no="274"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="275"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> </line> <line no="276"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_object</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="277"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_AND">&amp;&amp;</token> </line> <line no="278"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_WHITESPACE"> </token> <token name="T_INSTANCEOF">instanceof</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">ArrayAccess</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="279"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="280"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="281"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="282"/> <line no="283"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate the array / object</token> </line> <line no="284"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="285"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_object</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="286"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_INSTANCEOF">instanceof</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">ArrayAccess</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="287"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="288"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The entropy object should be an array or implement ArrayAccess interface'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1008</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="289"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="290"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="291"/> <line no="292"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that illegal attempts limit has correct indices, then set it</token> </line> <line no="293"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="294"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="295"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="296"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal attempts limit hasn\'t been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1009</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="297"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="298"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="299"/> <line no="300"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that password reset frequency has correct indices, then set it</token> </line> <line no="301"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="302"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> </line> <line no="303"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="304"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password reset frequency hasn\'t been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1010</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="305"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="306"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="307"/> <line no="308"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that passwordd repeat minimum has correct indices, then set it</token> </line> <line no="309"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="310"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> </line> <line no="311"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="312"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password repeat minimum has not been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1011</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="313"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="314"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="315"/> <line no="316"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that password repeat minimum has correct indices, then set it</token> </line> <line no="317"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="318"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_STRING">is_int</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> </line> <line no="319"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="320"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal attempts penalty seconds has not been set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1012</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="321"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="322"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="323"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="324"> <token name="T_WHITESPACE"> </token> </line> <line no="325"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="326"> <token name="T_DOC_COMMENT"> * Get the udf entropy data structure</token> </line> <line no="327"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="328"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="329"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="330"> <token name="T_DOC_COMMENT"> * @return array / Object</token> </line> <line no="331"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="332"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="333"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="334"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="335"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="336"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="337"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="338"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="339"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="340"> <token name="T_WHITESPACE"> </token> </line> <line no="341"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="342"> <token name="T_DOC_COMMENT"> * Get the udf password policy</token> </line> <line no="343"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="344"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="345"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="346"> <token name="T_DOC_COMMENT"> * @return array / Object</token> </line> <line no="347"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="348"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="349"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="350"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="351"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="352"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="353"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="354"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="355"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> </line> <line no="356"> <token name="T_WHITESPACE"> </token> </line> <line no="357"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="358"> <token name="T_DOC_COMMENT"> * Set the value of base entropy toggle flag</token> </line> <line no="359"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="360"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="361"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="362"> <token name="T_DOC_COMMENT"> * @param True or false to toggle the attribute</token> </line> <line no="363"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="364"> <token name="T_DOC_COMMENT"> * @return void</token> </line> <line no="365"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="366"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="367"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="368"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="369"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_setBaseEntropyOverride</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$toggle</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="370"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropyOverride</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="371"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_AND">&amp;&amp;</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">is_bool</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$toggle</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="372"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="373"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropyOverride</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$toggle</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="374"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="375"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="376"/> <line no="377"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="378"> <token name="T_DOC_COMMENT"> * Get the current value of base entropy override attrib</token> </line> <line no="379"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="380"> <token name="T_DOC_COMMENT"> * 2013-07-18</token> </line> <line no="381"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="382"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="383"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="384"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="385"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="386"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="387"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getBaseEntropyOverride</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="388"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropyOverride</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="389"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_baseEntropyOverride</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="390"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="391"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="392"> <token name="T_WHITESPACE"> </token> </line> <line no="393"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="394"> <token name="T_DOC_COMMENT"> * build simple regex patterns based on particular entropy settings</token> </line> <line no="395"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="396"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="397"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="398"> <token name="T_DOC_COMMENT"> * @param int patternCode - integer representing defined constants for variable code</token> </line> <line no="399"> <token name="T_DOC_COMMENT"> * @param int matchCount - integer representing the count of matched transactions</token> </line> <line no="400"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="401"> <token name="T_DOC_COMMENT"> * @return string</token> </line> <line no="402"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="403"> <token name="T_DOC_COMMENT"> * @access private</token> </line> <line no="404"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="405"> <token name="T_WHITESPACE"> </token> <token name="T_PRIVATE">private</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$patternCode</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="406"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="407"/> <line no="408"> <token name="T_WHITESPACE"> </token> <token name="T_SWITCH">switch</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$patternCode</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="409"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="410"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[A-Z]){</token> <token name="T_CURLY_OPEN">{</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_ENCAPSED_AND_WHITESPACE">})</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="411"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="412"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="413"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[a-z]){</token> <token name="T_CURLY_OPEN">{</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_ENCAPSED_AND_WHITESPACE">})</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="414"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="415"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">3</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="416"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[0-9]){</token> <token name="T_CURLY_OPEN">{</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_ENCAPSED_AND_WHITESPACE">})</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="417"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="418"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">4</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="419"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'(?=(?:.*([-@%+\/\'!#$^*?:.)(}{\[\]~_])){'</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">'})'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="420"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="421"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">5</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="422"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'((.)\2}?(\2{'</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">'}))'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="423"> <token name="T_WHITESPACE"> </token> <token name="T_DEFAULT">default</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="424"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="425"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="426"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="427"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The regex pattern is not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1013</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="428"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="429"/> <line no="430"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$patternRegex</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="431"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="432"> <token name="T_WHITESPACE"> </token> </line> <line no="433"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="434"> <token name="T_DOC_COMMENT"> * Get a description of the required password entropy</token> </line> <line no="435"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="436"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="437"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="438"> <token name="T_DOC_COMMENT"> * @return string</token> </line> <line no="439"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="440"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="441"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="442"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="443"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getPasswordEntropyDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="444"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="445"> <token name="T_WHITESPACE"> </token> </line> <line no="446"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password entropy requires at minimum, the following: '</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="447"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="448"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="449"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$concatenator</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="450"> <token name="T_WHITESPACE"> </token> </line> <line no="451"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="452"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$lowercaseLen</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="453"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_CONCAT_EQUAL">.=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token> <token name="T_VARIABLE">$lowercaseLen</token> <token name="T_ENCAPSED_AND_WHITESPACE"> lowercase characters</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="454"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="455"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="456"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="457"> <token name="T_WHITESPACE"> </token> </line> <line no="458"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="459"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="460"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$concatenator</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">','</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="461"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$uppercaseLen</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="462"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_CONCAT_EQUAL">.=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_VARIABLE">$concatenator</token> <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token> <token name="T_VARIABLE">$uppercaseLen</token> <token name="T_ENCAPSED_AND_WHITESPACE"> uppercase characters</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="463"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="464"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="465"> <token name="T_WHITESPACE"> </token> </line> <line no="466"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="467"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="468"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$concatenator</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">','</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="469"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$numericLen</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="470"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_CONCAT_EQUAL">.=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_VARIABLE">$concatenator</token> <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token> <token name="T_VARIABLE">$numericLen</token> <token name="T_ENCAPSED_AND_WHITESPACE"> numeric characters</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="471"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="472"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="473"/> <line no="474"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="475"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="476"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$concatenator</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$isFirstEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">','</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="477"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$specialLen</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="478"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_CONCAT_EQUAL">.=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_VARIABLE">$concatenator</token> <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token> <token name="T_VARIABLE">$specialLen</token> <token name="T_ENCAPSED_AND_WHITESPACE"> special characters</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="479"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="480"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="481"> <token name="T_WHITESPACE"> </token> </line> <line no="482"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_VARIABLE">$hasEntropy</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="483"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'There is no minimum password entropy policy in place'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="484"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="485"> <token name="T_WHITESPACE"> </token> </line> <line no="486"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$description</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="487"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="488"/> <line no="489"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="490"> <token name="T_DOC_COMMENT"> * Get a description of the required password entropy</token> </line> <line no="491"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="492"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="493"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="494"> <token name="T_DOC_COMMENT"> * @return string</token> </line> <line no="495"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="496"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="497"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="498"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="499"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getPasswordLengthDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="500"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="501"> <token name="T_WHITESPACE"> </token> </line> <line no="502"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="503"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE">The minimum password length is </token> <token name="T_CURLY_OPEN">{</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_ENCAPSED_AND_WHITESPACE"> characters</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="504"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="505"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'There is no minimum password length policy in place'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="506"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="507"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="508"> <token name="T_WHITESPACE"> </token> </line> <line no="509"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="510"> <token name="T_DOC_COMMENT"> * Get a description for the entropy policy regarding repeating a character consecutively</token> </line> <line no="511"> <token name="T_DOC_COMMENT"> * Cyril Ogana&lt;cogana@gmail.com&gt;</token> </line> <line no="512"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="513"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="514"> <token name="T_DOC_COMMENT"> * @return string</token> </line> <line no="515"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="516"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="517"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="518"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="519"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getPasswordCharacterRepeatDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="520"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="521"> <token name="T_WHITESPACE"> </token> </line> <line no="522"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="523"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_ENCAPSED_AND_WHITESPACE">The maximum allowed number of repeated characters in password of same type (e.g. aaa) is </token> <token name="T_CURLY_OPEN">{</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_PHPDOX_DOUBLE_QUOTES">"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="524"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="525"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">"There is no maximum allowed number of repeated characters in password of the same type (e.g. aaa)"</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="526"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="527"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="528"/> <line no="529"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="530"> <token name="T_DOC_COMMENT"> * Get a description of the required password policy</token> </line> <line no="531"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="532"> <token name="T_DOC_COMMENT"> * 2015-07-18</token> </line> <line no="533"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="534"> <token name="T_DOC_COMMENT"> * @return string</token> </line> <line no="535"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="536"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="537"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="538"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="539"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_getPasswordPolicyDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyType</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="540"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="541"/> <line no="542"> <token name="T_WHITESPACE"> </token> <token name="T_SWITCH">switch</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyType</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="543"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="544"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="545"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal login attempts limit is '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="546"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="547"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="548"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="549"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="550"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password reset frequency is '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">' days'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="551"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="552"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="553"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="554"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="555"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'A user is not allowed to repeat any of their last '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">' passwords'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="556"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="557"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="558"> <token name="T_WHITESPACE"> </token> <token name="T_CASE">case</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="559"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="560"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'A user account will be temporarily locked out after the illegal login attempts limit for '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">' seconds; and will require admin intervention if the offense is repeated'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="561"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="562"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="563"> <token name="T_WHITESPACE"> </token> <token name="T_DEFAULT">default</token> <token name="T_PHPDOX_COLON">:</token> </line> <line no="564"> <token name="T_WHITESPACE"> </token> </line> <line no="565"> <token name="T_WHITESPACE"> </token> <token name="T_BREAK">break</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="566"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="567"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="568"> <token name="T_WHITESPACE"> </token> </line> <line no="569"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="570"> <token name="T_DOC_COMMENT"> * validate the entropy of the password in the userprofile</token> </line> <line no="571"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="572"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="573"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="574"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="575"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="576"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="577"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="578"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="579"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_validateEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="580"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="581"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="582"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="583"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="584"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="585"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="586"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1014</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="587"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="588"/> <line no="589"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that user is not using part of username as password</token> </line> <line no="590"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_ARRAY">array</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="591"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">strtolower</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="592"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">strtolower</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="593"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">strtolower</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_STRING">str_replace</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">' '</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="594"> <token name="T_WHITESPACE"> </token> </line> <line no="595"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$fullNameExploded</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">explode</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">' '</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="596"> <token name="T_WHITESPACE"> </token> </line> <line no="597"> <token name="T_WHITESPACE"> </token> <token name="T_FOREACH">foreach</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$fullNameExploded</token> <token name="T_WHITESPACE"> </token> <token name="T_AS">as</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$nameItem</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="598"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">strtolower</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$nameItem</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="599"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="600"> <token name="T_WHITESPACE"> </token> </line> <line no="601"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//iterate and search for occurrences of name parts</token> </line> <line no="602"> <token name="T_WHITESPACE"> </token> <token name="T_FOREACH">foreach</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$namePartsArr</token> <token name="T_WHITESPACE"> </token> <token name="T_AS">as</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePart</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="603"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartCast</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING_CAST">(string)</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePart</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="604"> <token name="T_WHITESPACE"> </token> </line> <line no="605"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_STRING">strpos</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_STRING">strtolower</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$namePartCast</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_NOT_IDENTICAL">!==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="606"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'Password cannot contain username or any of your names'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_NAMEINPASSWD</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="607"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="608"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="609"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//set which entropy to use (base or udf)</token> </line> <line no="610"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="611"/> <line no="612"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$validateCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="613"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$upperCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="614"/> <line no="615"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//build the password entropy regex uppercase</token> </line> <line no="616"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="617"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//@TODO: Implement as constants the patterns</token> </line> <line no="618"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$pattern</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="619"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="620"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$upperCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$pattern</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="621"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="622"/> <line no="623"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$lowerCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="624"/> <line no="625"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//build the password entropy regex lowercase</token> </line> <line no="626"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="627"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$pattern</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="628"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="629"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$lowerCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$pattern</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="630"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="631"/> <line no="632"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$numericRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="633"/> <line no="634"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//build the password entropy regex numbers</token> </line> <line no="635"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="636"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$pattern</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">3</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="637"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="638"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$numericRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$pattern</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="639"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="640"/> <line no="641"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$specialRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">''</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="642"/> <line no="643"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//build the password entropy regex special</token> </line> <line no="644"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="645"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$pattern</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">4</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="646"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_QUESTION_MARK">?</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_COLON">:</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="647"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$specialRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$pattern</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$matchCount</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="648"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="649"/> <line no="650"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//regex entropy string</token> </line> <line no="651"/> <line no="652"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$validateCaseRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'/^'</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$upperCaseRegex</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$lowerCaseRegex</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$numericRegex</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$specialRegex</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="653"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">preg_match</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$validateCaseRegex</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="654"/> <line no="655"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_IDENTICAL">===</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="656"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'A fatal error occured in the password validation'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1015</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="657"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSEIF">elseif</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="658"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password does not meet the minimum entropy. '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getPasswordEntropyDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="659"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="660"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="661"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="662"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="663"> <token name="T_WHITESPACE"> </token> </line> <line no="664"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="665"> <token name="T_DOC_COMMENT"> * validate the password length of the users credentials</token> </line> <line no="666"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="667"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="668"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="669"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="670"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="671"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="672"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="673"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="674"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_validateLength</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="675"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="676"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="677"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="678"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="679"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="680"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="681"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1016</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="682"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="683"/> <line no="684"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//determine which entropy to use (base or udf)</token> </line> <line no="685"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="686"> <token name="T_WHITESPACE"> </token> </line> <line no="687"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//perform length check</token> </line> <line no="688"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_STRING">strlen</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_LT">&lt;</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="689"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password does not meet required length. '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getPasswordLengthDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="690"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="691"> <token name="T_WHITESPACE"> </token> </line> <line no="692"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="693"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="694"> <token name="T_WHITESPACE"> </token> </line> <line no="695"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="696"> <token name="T_DOC_COMMENT"> * validate that there are no instances of consecutive character repetitions beyond allowed number</token> </line> <line no="697"> <token name="T_DOC_COMMENT"> * in the users password string</token> </line> <line no="698"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="699"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="700"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="701"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="702"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="703"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="704"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="705"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="706"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="707"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_validateConsecutiveCharacterRepeat</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="708"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="709"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="710"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="711"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="712"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="713"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="714"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1017</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="715"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="716"/> <line no="717"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//determine which entropy to use (base or udf)</token> </line> <line no="718"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfEntropySetting</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="719"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$maxConsecutiveChars</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_INT_CAST">(int)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="720"> <token name="T_WHITESPACE"> </token> </line> <line no="721"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//because we offset by -2 when doing regex, if the limit is not greater or equal to 2, default to 2</token> </line> <line no="722"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$maxConsecutiveChars</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_GREATER_OR_EQUAL">&gt;=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="723"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$maxConsecutiveChars</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="724"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="725"> <token name="T_WHITESPACE"> </token> </line> <line no="726"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//offset for purposes of matching (TODO: fix?)</token> </line> <line no="727"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$maxConsecutiveCharsRegexOffset</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_INC">++</token> <token name="T_VARIABLE">$maxConsecutiveChars</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_MINUS">-</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">2</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="728"> <token name="T_WHITESPACE"> </token> </line> <line no="729"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//build regex</token> </line> <line no="730"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$maxConsecutiveCharsRegex</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_regexBuildPattern</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_LNUMBER">5</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$maxConsecutiveCharsRegexOffset</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="731"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//die(print_r($maxConsecutiveCharsRegex));</token> </line> <line no="732"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">preg_match</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$maxConsecutiveCharsRegex</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="733"/> <line no="734"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_IDENTICAL">===</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="735"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'A fatal error occured in the password validation'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1018</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="736"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSEIF">elseif</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$testVal</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="737"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password violates policy about consecutive character repetitions. '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_getPasswordCharacterRepeatDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="738"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="739"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="740"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> </line> <line no="741"> <token name="T_WHITESPACE"> </token> </line> <line no="742"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="743"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="744"> <token name="T_WHITESPACE"> </token> </line> <line no="745"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="746"> <token name="T_DOC_COMMENT"> * validate the password policy during authentication</token> </line> <line no="747"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="748"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="749"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="750"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="751"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="752"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="753"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="754"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="755"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="756"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_validatePolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="757"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="758"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="759"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="760"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="761"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="762"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="763"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1019</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="764"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="765"/> <line no="766"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//determine which entropy to use (base or udf)</token> </line> <line no="767"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="768"> <token name="T_WHITESPACE"> </token> </line> <line no="769"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//check attempt limits</token> </line> <line no="770"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'account_state'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTSTATE_AUTHFAILED</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="771"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'failed_attempt_count'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_GT">&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="772"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The account has exceeded login attempts and is locked. Contact admin'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_ATTEMPTLIMIT2</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="773"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSEIF">elseif</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'failed_attempt_count'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="774"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The account has failed login '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_INC">++</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">' times in a row and is temporarily locked. Any further wrong passwords will lead to your account being locked fully. You will be automatically unlocked in '</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DIV">/</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">60</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_DOT">.</token> <token name="T_CONSTANT_ENCAPSED_STRING">' minutes or contact admin to unlock immediately'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_ATTEMPTLIMIT1</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="775"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="776"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'Login failed. Wrong username or password'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_VALID</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="777"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="778"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="779"> <token name="T_WHITESPACE"> </token> </line> <line no="780"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//check needs reset</token> </line> <line no="781"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$currDateTimeObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">DateTime</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="782"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passChangeDaysElapsedObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$currDateTimeObj</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">diff</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_last_changed_datetime'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="783"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passChangeDaysElapsed</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passChangeDaysElapsedObj</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">format</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'%a'</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="784"> <token name="T_WHITESPACE"> </token> </line> <line no="785"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$passChangeDaysElapsed</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_GT">&gt;</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="786"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The password has expired and must be changed'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_EXPIRED</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="787"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="788"> <token name="T_WHITESPACE"> </token> </line> <line no="789"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="790"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="791"> <token name="T_WHITESPACE"> </token> </line> <line no="792"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="793"> <token name="T_DOC_COMMENT"> * validate the password policy during process of making a password change</token> </line> <line no="794"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="795"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="796"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="797"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="798"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="799"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="800"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="801"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="802"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="803"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_validatePolicyAtChange</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="804"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="805"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="806"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="807"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="808"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="809"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="810"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1020</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="811"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="812"/> <line no="813"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//determine which entropy to use (base or udf)</token> </line> <line no="814"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_udfPasswordPolicy</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="815"> <token name="T_WHITESPACE"> </token> </line> <line no="816"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//check password repeat</token> </line> <line no="817"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passHistory</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="818"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passHistoryRequired</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">array_slice</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$passHistory</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">0</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_INT_CAST">(int)</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="819"> <token name="T_WHITESPACE"> </token> </line> <line no="820"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//iterate and verify</token> </line> <line no="821"> <token name="T_WHITESPACE"> </token> <token name="T_FOREACH">foreach</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$passHistoryRequired</token> <token name="T_WHITESPACE"> </token> <token name="T_AS">as</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passHistoryItem</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="822"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_STRING">password_verify</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$passHistoryItem</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="823"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">UserCredentialException</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'User cannot repeat any of their '</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$policyObj</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_DOT">.</token> <token name="T_WHITESPACE"> </token> <token name="T_CONSTANT_ENCAPSED_STRING">' last passwords'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_REPEATERROR</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="824"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="825"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="826"> <token name="T_WHITESPACE"> </token> </line> <line no="827"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="828"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="829"> <token name="T_WHITESPACE"> </token> </line> <line no="830"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="831"> <token name="T_DOC_COMMENT"> * Check that a user can change password in case you want to implement limits on changing passwords</token> </line> <line no="832"> <token name="T_DOC_COMMENT"> * only once in 24 hours</token> </line> <line no="833"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="834"> <token name="T_DOC_COMMENT"> * Cyril Ogana &lt;cogana@gmail.com&gt;</token> </line> <line no="835"> <token name="T_DOC_COMMENT"> * 2018-07-18</token> </line> <line no="836"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="837"> <token name="T_DOC_COMMENT"> * @return bool</token> </line> <line no="838"> <token name="T_DOC_COMMENT"> *</token> </line> <line no="839"> <token name="T_DOC_COMMENT"> * @access protected</token> </line> <line no="840"> <token name="T_DOC_COMMENT"> * @final</token> </line> <line no="841"> <token name="T_DOC_COMMENT"> */</token> <token name="T_WHITESPACE"> </token> </line> <line no="842"> <token name="T_WHITESPACE"> </token> <token name="T_FINAL">final</token> <token name="T_WHITESPACE"> </token> <token name="T_PROTECTED">protected</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">_canChangePassword</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="843"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//validate that required indices exist</token> </line> <line no="844"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="845"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="846"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="847"> <token name="T_WHITESPACE"> </token> <token name="T_BOOLEAN_OR">||</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EXCLAMATION_MARK">!</token> <token name="T_ISSET">isset</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> </line> <line no="848"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="849"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1021</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="850"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="851"> <token name="T_WHITESPACE"> </token> </line> <line no="852"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//Verify if the password was changed today or server has been futuredated</token> </line> <line no="853"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$currDateTimeObj</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">DateTime</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="854"> <token name="T_WHITESPACE"> </token> </line> <line no="855"> <token name="T_WHITESPACE"> </token> <token name="T_COMMENT">//Password was changed today or in the future</token> </line> <line no="856"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$currDateTimeObj</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_SMALLER_OR_EQUAL">&lt;=</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$this</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">_userProfile</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_OPEN_SQUARE">[</token> <token name="T_CONSTANT_ENCAPSED_STRING">'password_last_changed_datetime'</token> <token name="T_PHPDOX_CLOSE_SQUARE">]</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="857"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">false</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="858"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="859"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">true</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="860"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="861"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="862"> <token name="T_WHITESPACE"> </token> </line> <line no="863"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="864"> <token name="T_DOC_COMMENT"> * Check password strength using NIST Or Wolfram adapter (default NIST)</token> </line> <line no="865"> <token name="T_DOC_COMMENT"> * See https://github.com/rchouinard/phpass</token> </line> <line no="866"> <token name="T_DOC_COMMENT"> * Many thanks to Ryan Chouinard for the phpass package</token> </line> <line no="867"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="868"> <token name="T_DOC_COMMENT"> * @param string $passwordString - The password string to evaluate</token> </line> <line no="869"> <token name="T_DOC_COMMENT"> * @param int $strengthAdapter - Named constant representing adapter to use (default NIST)</token> </line> <line no="870"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="871"> <token name="T_DOC_COMMENT"> * @return int</token> </line> <line no="872"> <token name="T_DOC_COMMENT"> * </token> </line> <line no="873"> <token name="T_DOC_COMMENT"> * @access public</token> </line> <line no="874"> <token name="T_DOC_COMMENT"> * @static</token> </line> <line no="875"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="876"> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_STATIC">static</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">passwordStrength</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$passwordString</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_NIST</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="877"> <token name="T_WHITESPACE"> </token> <token name="T_IF">if</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_WOLFRAM</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="878"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Strength</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Adapter</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Wolfram</token> <token name="T_PHPDOX_SEMICOLON">;</token> <token name="T_WHITESPACE"> </token> </line> <line no="879"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSEIF">elseif</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_WHITESPACE"> </token> <token name="T_IS_EQUAL">==</token> <token name="T_WHITESPACE"> </token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_NIST</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="880"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Strength</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Adapter</token> <token name="T_NS_SEPARATOR">\</token> <token name="T_STRING">Nist</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="881"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> <token name="T_WHITESPACE"> </token> <token name="T_ELSE">else</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_OPEN_CURLY">{</token> </line> <line no="882"> <token name="T_WHITESPACE"> </token> <token name="T_THROW">throw</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Exception</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_CONSTANT_ENCAPSED_STRING">'Phpass strength adapter calculator must be NIST or Wolfram. Wrong Flag provivded.'</token> <token name="T_PHPDOX_COMMA">,</token> <token name="T_WHITESPACE"> </token> <token name="T_LNUMBER">1022</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="883"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="884"/> <line no="885"> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$phpassStrength</token> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_EQUAL">=</token> <token name="T_WHITESPACE"> </token> <token name="T_NEW">new</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">Strength</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$strengthAdapter</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="886"> <token name="T_WHITESPACE"> </token> <token name="T_RETURN">return</token> <token name="T_WHITESPACE"> </token> <token name="T_VARIABLE">$phpassStrength</token> <token name="T_OBJECT_OPERATOR">-&gt;</token> <token name="T_STRING">calculate</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$passwordString</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="887"> <token name="T_WHITESPACE"> </token> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="888"> <token name="T_WHITESPACE"> </token> </line> <line no="889"> <token name="T_WHITESPACE"> </token> <token name="T_DOC_COMMENT">/**</token> </line> <line no="890"> <token name="T_DOC_COMMENT"> * Abstract methods for concrete implementation</token> </line> <line no="891"> <token name="T_DOC_COMMENT"> */</token> </line> <line no="892"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getBaseEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="893"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getBaseEntropyOverride</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="894"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getBasePasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="895"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getPasswordEntropyDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="896"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getPasswordLengthDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="897"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getPasswordPolicyDescription</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="898"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="899"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">getUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="900"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">setBaseEntropyOverride</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$toggle</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="901"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">setUdfEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="902"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">setUdfPasswordPolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_VARIABLE">$entropyObj</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="903"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">validateEntropy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="904"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">validateLength</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="905"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">validateConsecutiveCharacterRepeat</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="906"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">validatePolicy</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="907"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">validatePolicyAtChange</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="908"> <token name="T_WHITESPACE"> </token> <token name="T_ABSTRACT">abstract</token> <token name="T_WHITESPACE"> </token> <token name="T_PUBLIC">public</token> <token name="T_WHITESPACE"> </token> <token name="T_FUNCTION">function</token> <token name="T_WHITESPACE"> </token> <token name="T_STRING">canChangePassword</token> <token name="T_PHPDOX_OPEN_BRACKET">(</token> <token name="T_PHPDOX_CLOSE_BRACKET">)</token> <token name="T_PHPDOX_SEMICOLON">;</token> </line> <line no="909"> <token name="T_PHPDOX_CLOSE_CURLY">}</token> </line> <line no="910"/> </source>