/**
* Initialize the login module. This stores the subject, callbackHandler and sharedState and options
* for the login session. Subclasses should override if they need to process their own options. A call
* to parent::initialize() must be made in the case of an override.
*
* The following parameters can by default be passed from the configuration.
*
* lookupName: The datasource name used to lookup in the naming directory
* rolesQuery: The database query used to load the user's roles
* principalsQuery: The database query used to load the user
*
* @param \AppserverIo\Psr\Security\Auth\Subject $subject The Subject to update after a successful login
* @param \AppserverIo\Psr\Security\Auth\Callback\CallbackHandlerInterface $callbackHandler The callback handler that will be used to obtain the user identity and credentials
* @param \AppserverIo\Collections\MapInterface $sharedState A map shared between all configured login module instances
* @param \AppserverIo\Collections\MapInterface $params The parameters passed to the login module
*
* @return void
*/
public function initialize(Subject $subject, CallbackHandlerInterface $callbackHandler, MapInterface $sharedState, MapInterface $params)
{
// call the parent method
parent::initialize($subject, $callbackHandler, $sharedState, $params);
// check to see if password hashing has been enabled, if an algorithm is set, check for a format and charset
$this->hashAlgorithm = new String($params->get(ParamKeys::HASH_ALGORITHM));
// query whether or not a hash algorithm has been specified
if ($this->hashAlgorithm != null) {
// initialize the hash encoding to use
if ($params->exists(ParamKeys::HASH_ENCODING)) {
$this->hashEncoding = new String($params->get(ParamKeys::HASH_ENCODING));
} else {
$this->hashEncoding = new String(Util::BASE64_ENCODING);
}
// initialize the hash charset if specified
if ($params->exists(ParamKeys::HASH_CHARSET)) {
$this->hashCharset = new String($params->get(ParamKeys::HASH_CHARSET));
}
}
// query whether or not we should ignor case when comparing passwords
if ($params->exists(ParamKeys::IGNORE_PASSWORD_CASE)) {
$flag = new String($params->get(ParamKeys::IGNORE_PASSWORD_CASE));
$this->ignorePasswordCase = Boolean::valueOf($flag)->booleanValue();
} else {
$this->ignorePasswordCase = false;
}
}