private void SecurizeForm(bool AddMenu) { bool UserHaveAccess = false; string UserID = string.Empty; bool ScanControl = false; bool ShowTestEnvironment = true; if (_allModules == null) { _allModules = SynapseModule.Load(); } try { ShowTestEnvironment = bool.Parse(ConfigurationManager.AppSettings["ShowTestEnvironment"]); } // TODO: Replace by more specific exception catch (Exception) { // TODO: Log exception } if (System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Designtime) { if (log4net.LogManager.GetRepository().Configured == false) { XmlConfigurator.Configure(); } if (_formUser == null) { UserID = WindowsIdentity.GetCurrent().Name; FormUser = new SynapseCore.Security.User(UserID, this.ModuleID); } if (_language == null) { string languageFilter = null; try { languageFilter = ConfigurationManager.AppSettings["ModuleLanguages"]; } catch { SynapseLogger.Debug("ModuleLanguage not defined in app.config"); } if (languageFilter != null && languageFilter != string.Empty && languageFilter != "") { _language = SynapseLanguage.Load("where CODE in (" + languageFilter + ")"); } else { _language = SynapseLanguage.Load(); } } SynapseLogger.Debug("ModuleLanguage not defined in app.config"); if (Control.ModifierKeys == (Keys.Control | Keys.Shift) && FormUser.IsMemberOf("SYNAPSE_SECURITY_USER_IMPERSONATE")) { frm_EnterUser UserDialog = new frm_EnterUser(); UserDialog.ShowDialog(); UserID = UserDialog.UserID; if (UserID != string.Empty) { FormUser = new SynapseCore.Security.User(UserID, this.ModuleID); } } SynapseLogger.Debug("Check key modifier"); if (FormUser.UserCulture != string.Empty && FormUser.UserCulture != null) { _CurrentLanguage.CULTURE = FormUser.UserCulture; } else { _CurrentLanguage.CULTURE = Thread.CurrentThread.CurrentCulture.Name; } SynapseLogger.Debug("Set Current Language"); foreach (SynapseLanguage lang in _language) { if (lang.CULTURE == _CurrentLanguage.CULTURE) { _CurrentLanguage = lang; } } SynapseLogger.Debug("Set Current Language Label"); if (_CurrentLanguage.LABEL == null) { _CurrentLanguage = _language[0]; } Security.Tools.SetCulture(_CurrentLanguage.CULTURE); SynapseLogger.Debug("Configure Resource Manager"); ConfigureResourceManager(); SynapseLogger.Debug("Set Current Module access"); if (FormUser != null) { foreach (SynapseModule Module in _allModules) //FormUser.Modules { if (_CurrentSynapse == null && Module.ID == 1) { _CurrentSynapse = Module; } if (_CurrentModule == null && Module.ID == _ModuleID) { _CurrentModule = Module; } } if (FormUser.Modules.Select(m => m.ID).Contains(_CurrentModule.ID)) { UserHaveAccess = true; } } SynapseLogger.Debug("Check Module Mode"); if (CurrentModule.ID == 1) { if (SynapseCore.Database.DBFunction.ConnectionName != "Default") { Mode = SynapseModule.SynapseModuleMode.Development; } else { Mode = SynapseModule.SynapseModuleMode.Production; } } else { Mode = Application.ExecutablePath.Contains("\\Dev\\") ? SynapseModule.SynapseModuleMode.Development : SynapseModule.SynapseModuleMode.Production; } //redify List <Control> menupoint = Controls.OfType <ToolStrip>().Cast <Control>().ToList(); if (menupoint.Count > 0) { foreach (Control Ctrl in menupoint) { if (SynapseCore.Database.DBFunction.FormBackColor != SystemColors.Control && ShowTestEnvironment) { ((ToolStrip)Ctrl).BackColor = SynapseCore.Database.DBFunction.FormBackColor; } } } //end refify SynapseLogger.Debug("Add Menu"); if (this.ShowMenu && AddMenu) { ConfigureMenu(); } SynapseLogger.Debug("Language Message"); string LangMessage = "en"; try { LangMessage = _CurrentLanguage.CULTURE.Substring(0, 2).ToUpper(); } // TODO: Replace by more specific exception catch (Exception) { SynapseLogger.Error("Unable to determine language of message"); } SynapseLogger.Debug("Message No Access"); if (!UserHaveAccess && ModuleID != 1) { MessageBox.Show(Properties.Resources.ResourceManager.GetString(LangMessage + "_NoAccess")); Application.Exit(); } SynapseLogger.Debug("Message Not Active"); if (!CurrentModule.IS_ACTIVE && Mode == SynapseModule.SynapseModuleMode.Production) { MessageBox.Show("(" + Mode.ToString() + ") " + Properties.Resources.ResourceManager.GetString(LangMessage + "_Maintenance")); Application.Exit(); } SynapseLogger.Debug("Message Not Up To Date"); if (!CurrentModule.is_uptodate(Application.StartupPath, Mode) && !System.Diagnostics.Debugger.IsAttached) { try { MessageBox.Show(Properties.Resources.ResourceManager.GetString(LangMessage + "_UpdateNeeded")); string file = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf(Mode == SynapseModule.SynapseModuleMode.Production ? "\\Prod\\" : "\\Dev\\")) + "\\Synapse.exe"; if (file != null) { SynapseCore.Controls.SynapseForm.SynapseLogger.Debug("starting " + file); System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; proc.StartInfo.FileName = file; proc.StartInfo.WorkingDirectory = Path.GetFullPath(file); proc.StartInfo.Arguments = Mode == SynapseModule.SynapseModuleMode.Production ? "" : "/con:ACC"; proc.Start(); } else { SynapseCore.Controls.SynapseForm.SynapseLogger.Debug("Not exist " + file); } Application.Exit(); } // TODO: Replace by more specific exception catch (Exception) { if (!FormUser.IsMemberOf("SYNAPSE_SECURITY_ADMIN")) { MessageBox.Show("Application not in right location !"); Application.Exit(); } } } SynapseLogger.Debug("Message Development"); if (Mode == SynapseModule.SynapseModuleMode.Development && !DevACK) { MessageBox.Show(Properties.Resources.ResourceManager.GetString(LangMessage + "_DevelopmentMode")); DevACK = true; } try { ScanControl = bool.Parse(ConfigurationManager.AppSettings["ScanControl"]); } // DONE: Replaced by more specific exception (see http://msdn.microsoft.com/en-us/library/vstudio/system.configuration.configurationmanager.appsettings(v=vs.90).aspx) catch (ConfigurationErrorsException) { // TODO: Remove swallowing of Exception } if (UpdateControls && ModuleID != 0 && ScanControl) { System.IO.TextWriter w = new System.IO.StreamWriter(Application.StartupPath + "\\" + this.Name + "_res.SynapseResource", false, System.Text.Encoding.Unicode); w.Write(SynapseCore.Security.Tools.UpdateControlsInDB(this.Controls, this.ModuleID, null).ToString()); w.Flush(); w.Close(); } SynapseLogger.Debug("Init Form"); initForm(Security.Tools.SecureAndTranslateMode.Secure | Security.Tools.SecureAndTranslateMode.Transalte); } }