private void btnAccept_Click(object sender, System.EventArgs e) { // A 1ª instancia demora sempre mais tempo, é necessário carregar uma série de dados this.Cursor = Cursors.WaitCursor; GISADataset ds = GisaDataSetHelper.GetInstance(); this.Cursor = Cursors.Arrow; if (ds == null) { MessageBox.Show("A base de dados não se encontra disponível, por favor " + Environment.NewLine + "contacte o administrador de sistema.", "Acesso à base de dados", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } frmMain main = null; try { string username = txtUser.Text.Replace("'", "''"); string assemblyVersion = null; string modules = string.Empty; foreach(GISADataset.ModulesRow mRow in SessionHelper.AppConfiguration.GetCurrentAppconfiguration().Modules) { modules += mRow.ID + ","; } modules = modules.TrimEnd(','); assemblyVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName; // Validar utilizador TrusteeRule.IndexErrorMessages messageIndex = TrusteeRule.IndexErrorMessages.InvalidUser; // Carregar o utilizador GISADataset.TrusteeUserRow tuRow = null; tuRow = LoadCurrentOperator(username); // LDAP Authentication string ldapServerName = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().LDAPServerName; string ldapSettings = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().LDAPServerSettings; if (ldapServerName != null && tuRow != null && tuRow.IsLDAPUser) { LDAPHandler ldapH = new LDAPHandler(ldapServerName, ldapSettings, username, txtPassword.Text); ldapH.ConnectToLDAP(); if (ldapH.IsLoggedIn) { messageIndex = 0; } else { messageIndex = TrusteeRule.IndexErrorMessages.InvalidUser; } } else { messageIndex = Trustee.validateUser(username, CryptographyHelper.GetMD5(txtPassword.Text)); } //verificar se ocorreu algum erro no processo de login if (messageIndex != 0) { GUIHelper.GUIHelper.MessageBoxLoginErrorMessages(Convert.ToInt32(messageIndex)); throw new LoginException(); } // Adicionar o GisaPrincipal System.Threading.Thread.CurrentPrincipal = new GisaPrincipal(tuRow); if (SessionHelper.GetGisaPrincipal().TrusteePrivileges.Rows.Count == 0) { GUIHelper.GUIHelper.MessageBoxLoginErrorMessages(Convert.ToInt32(DBAbstractDataLayer.DataAccessRules.TrusteeRule.IndexErrorMessages.UserWithoutPermissions)); throw new LoginException(); } main = new frmMain(username); } catch (LoginException) { return; } catch (Exception ex) { Trace.WriteLine(ex); MessageBox.Show("Ocorreu um erro durante o processo de início da sessão, " + Environment.NewLine + "por favor contacte o administrador de sistema.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.Hide(); main.ShowDialog(); this.Close(); }