public void processLogin(EBioLogin bioLoginExcp, BioRequest request, Action<EBioException, BioRequest> callback) { if (bioLoginExcp != null) { this._processLogin(bioLoginExcp, (EBioException e) => { if (callback != null) callback(e, request); }); } }
private void _processLogin(EBioLogin bioLoginExcp, Action<EBioException> callback) { if(bioLoginExcp is EBioLoggedOut) { this.CurUsr = null; if (callback != null) callback(bioLoginExcp); } else { // Запрашиваем ввод логина this._getLogin((newLogin) => { if (newLogin == null) { // Если пользователь не ввел логин, тогда отбой if (callback != null) callback(new EBioCancel()); } else { // Пользователь ввел логин String vCurUsrName = Utl.ExtractUsrNameFromLogin(newLogin); String vCurUsrPwd = Utl.ExtractUsrPwdFromLogin(newLogin); // Запускаем процедуру проверки логина postLogin(newLogin, (r) => { EBioException vExcp = decBioLoginExcp(r.Ex); if (vExcp != null) { if (vExcp is EBioOk) { this.assignCurUser(((EBioOk)vExcp).Usr); this.FOwner.Env.ConfigRoot.LastLoggedInUserName = vCurUsrName; this.FOwner.Env.LastSuccessPwd = vCurUsrPwd; if (this.FOwner.Env.ConfigRoot.SavePassword) this.FOwner.Env.ConfigRoot.LastLoggedInUserPwd = vCurUsrPwd; else this.FOwner.Env.ConfigRoot.LastLoggedInUserPwd = String.Empty; ((IConfigurable<ConfigRoot>)this.FOwner.Env.PluginRoot).Cfg.Store(); if (callback != null) callback(vExcp); } else if (vExcp is EBioAutenticationError) { String v_errMsg = null; if (vExcp is EBioBadUser) v_errMsg = "Не верное имя пользователя [" + vCurUsrName + "] или пароль."; else if (vExcp is EBioUncnfrmdUser) v_errMsg = "Пользователь [" + vCurUsrName + "] не активирован."; else if (vExcp is EBioBlockedUser) v_errMsg = "Пользователь [" + vCurUsrName + "] заблокирован."; else if (vExcp is EBioBadPwd) v_errMsg = "Не верный пароль."; this.showLoginError(v_errMsg, () => { this._processLogin(bioLoginExcp, callback); }); } else { vExcp = new EBioException("Непредвиденная ошибка: " + r.Ex.Message); if (callback != null) callback(vExcp); } } else { vExcp = EBioException.CreateIfNotEBio(r.Ex); if (callback != null) callback(vExcp); } }); } }); } }