* @throws ClipsServerException
*/
@Override
public int login(Object aCollaboratorID, byte[] tryPasswdHash) throws Exception, ClipsServerException {
cleanOldSessions();
CollaboratorAbstract colEntity = findEntity(CollaboratorAbstract.class, (Integer) aCollaboratorID, "сотрудники");
if (sessionPassword == null) {
throw new ESecurity("Внутренняя ошибка: Перед вызовом login должен быть вызван getEncryptor ");
}
//check is admin or not
ServConfig sc = manager.find(ServConfig.class, ConfigParametrAbstract.ID_ADMIN_PASSWORD_HASH);
String adminPassword = (sc == null) ? null : sc.getStrvalue();
boolean isSuperUser = false;
if (adminPassword != null && !adminPassword.isEmpty()) {
isSuperUser = sessionPassword.verifyHash(tryPasswdHash,
SessionPassword.char2byte(adminPassword.toCharArray()));
} else {
isSuperUser = sessionPassword.verifyPassword(tryPasswdHash, DEFAULT_ADMIN_PASSWORD);
}
if (!isSuperUser) {
if(useLDAP) {
checkLDAP(colEntity.getLdapName(), tryPasswdHash);
} else {
if (colEntity.getPasswordHash() == null) {
throw new ESecurity("У Вас не установлен пароль, поэтому вход в систему невозможен. Обратитесь к администратору");
}
if (!sessionPassword.verifyHash(tryPasswdHash, colEntity.getPasswordHash())) {
sessionPassword = null;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// DO NOTHING