/// <summary> Авторизация пользователя </summary> public static EnumResultLogin Login(ModelLogin modelLogin) { if (String.IsNullOrWhiteSpace(modelLogin.Login) || modelLogin.Password == null) { return(EnumResultLogin.AuthFailed); } var lastLoginUserCryptKey = UtilitySecurity.LoadPrivateCryptKeyFromIsolatedStorage(modelLogin.Login, modelLogin.ServerAreaCode.ToString()); var result = EnumResultLogin.No; if (modelLogin.LastModelAutoLogin) { var success = Logic.TryAutoLoginWithPassword(modelLogin.Password, lastLoginUserCryptKey); //Если при автологине считался неверный пароль, нужно логинится методом Logic.Login для этого обнуляется переменная modelLogin.LastModelAutoLogin modelLogin.LastModelAutoLogin = success; result = success ? EnumResultLogin.No : EnumResultLogin.SystemError; } else { var resultLogin = Logic.Login(modelLogin.Login.Trim(), modelLogin.Password, modelLogin.ServerAreaCode, lastLoginUserCryptKey); // сохранение дополнительных пораметров при логине пользователя, хотелось бы сразу их передавать в Logic.Login, но Серега сказал пока сделать так if (resultLogin.Success) { var modelUserSettings = DataSourceUserSettings.GetModelUserSettings(); modelUserSettings.AutoLogin = modelLogin.AutoLogin; modelUserSettings.ModelLanguageObj = modelLogin.ModelLanguageObj; modelUserSettings.Autostart = modelLogin.Autostart; var resultSaveUserSettings = DataSourceUserSettings.SaveModelUserSettings(modelUserSettings); if (resultSaveUserSettings == false) { result = EnumResultLogin.SystemError; } var resultSavePasswordToStorage = UtilitySecurity.SavePasswordToIsolatedStorage(modelLogin.Password, modelLogin.Login); if (!resultSavePasswordToStorage) { result = EnumResultLogin.SystemError; } } else { switch (resultLogin.ErrorCode) { case ResultErrorCodeManaged.AuthFailed: result = EnumResultLogin.AuthFailed; break; case ResultErrorCodeManaged.NoNetwork: result = EnumResultLogin.NoNetwork; break; default: result = EnumResultLogin.SystemError; break; } } } if (result == EnumResultLogin.No) { if (modelLogin.ModelServerAreaObj != null) { CurrentModelServerArea = modelLogin.ModelServerAreaObj; } else { List <ModelServerArea> listModelServerArea; if (GetListModelServerArea(out listModelServerArea) == EnumResultLogin.No) { CurrentModelServerArea = listModelServerArea.FirstOrDefault(obj => obj.Id == modelLogin.ServerAreaCode); } } } return(result); }