/// <summary> /// Try to get a copy of the system by ID. sessions /// </summary> private bool TryGetScadaInstance(long sessionID, out ScadaInstance scadaInstance) { if (TryGetSession(sessionID, out var session)) { scadaInstance = session.LoggedOn ? session.ScadaInstance : null; if (scadaInstance == null) { Log.WriteError(string.Format( Localization.UseRussian ? "Экземпляр системы не определён для сессии с ид. {0}" : "System instance is not defined for a session with ID {0}", sessionID)); return(false); } else { return(true); } } else { scadaInstance = null; return(false); } }
public bool Login(long sessionID, string username, string encryptedPassword, string scadaInstanceName, out string errMsg) { if (TryGetSession(sessionID, out Session session)) { session.ClearUser(); ScadaInstance scadaInstance = InstanceManager.GetScadaInstance(scadaInstanceName); if (scadaInstance == null) { errMsg = Localization.UseRussian ? "Экземпляр системы не найден" : "System instance not found"; Log.WriteError(string.Format(Localization.UseRussian ? "Экземпляр системы с наименованием \"{0}\" не найден" : "System instance named \"{0}\" not found", scadaInstanceName)); } else { string password = CryptoUtils.SafelyDecryptPassword(encryptedPassword, sessionID, AppData.Settings.SecretKey); if (scadaInstance.ValidateUser(username, password, out errMsg)) { Log.WriteAction(string.Format(Localization.UseRussian ? "Пользователь {0} подключился к {1}" : "User {0} connected to {1}", username, scadaInstanceName)); session.SetUser(username, scadaInstance); return(true); } else { Log.WriteError(string.Format(Localization.UseRussian ? "Пользователь {0} не прошёл проверку для подключения к {1} - {2}" : "User {0} failed validation to connect to {1} - {2}", username, scadaInstanceName, errMsg)); } } } else { errMsg = Localization.UseRussian ? "Сессия не найдена" : "Session not found"; } return(false); }