protected void Page_Load(object sender, EventArgs e) { settingsMasterPage = (SettingsMasterPage)Page.Master; settingsMasterPage.InitializeMasterPageComponents(); int loginId; Boolean isNumeric = int.TryParse(Request.QueryString["loginId"], out loginId); if (!isNumeric) { EmbedClientScript.ShowErrorMessage(this, "Os parâmetros passados para a página não estão em um formato válido.", true); return; } Tenant tenant = (Tenant)Session["tenant"]; loginDAO = new LoginDAO(settingsMasterPage.dataAccess.GetConnection()); AccountingLib.Entities.Login login = loginDAO.GetLogin(tenant.id, loginId); if (login == null) { login = new AccountingLib.Entities.Login(); login.tenantId = tenant.id; } SettingsInput settingsInput = new SettingsInput(settingsArea, null); settingsInput.AddHidden("txtId", login.id.ToString()); settingsInput.AddHidden("txtTenantId", login.tenantId.ToString()); settingsInput.AddHidden("txtPassword", login.password); settingsInput.Add("txtUsername", "Login", login.username); settingsInput.AddDropDownList("cmbUserGroup", "Grupo/Permissão", login.userGroup, typeof(UserGroupEnum)); }
public Boolean ValidateCredentials() { // Divide o loginName em dominio(empresa) e nome do usuário String[] nameParts = loginName.Split(new Char[] { '\\' }); if (nameParts.Length != 2) { errorMessage = @"Informar empresa e usuário (Ex.: Datacopy\guest)!"; return(false); } // Verifica se foi entrado um domínio válido (se empresa existe) TenantDAO tenantDAO = new TenantDAO(sqlConnection); tenant = tenantDAO.GetTenant(nameParts[0]); if (tenant == null) { errorMessage = "Empresa inexistente!"; return(false); } // A consulta ao tenant no BD não é case sensitive, devido a isso o tenant é retornado // independente se as letras estão em maiúsculas ou minúsculas. Agora faço a comparação // case sensitive if (tenant.name != nameParts[0]) { errorMessage = "A empresa não confere!"; return(false); } String username = nameParts[1]; String userpass = Cipher.GenerateHash(password); // A consulta ao username no BD não é case sensitive, devido a isso o login é retornado // independente se as letras estão em maiúsculas ou minúsculas. Posteriormente é feita // uma comparação case sensitive no username ( em loginValidator ) LoginDAO loginDAO = new LoginDAO(sqlConnection); login = loginDAO.GetLogin(tenant.id, username); LoginValidator loginValidator = new LoginValidator(login); if (!loginValidator.CheckCredentials(username, userpass)) { errorMessage = loginValidator.GetLastError(); return(false); } // Se todas a verificações foram bem sucedidas retorna status de sucesso return(true); }