/// <summary> /// Формирование заявок пляшем от АИС 3 /// </summary> /// <param name="userRule">Спаршенные данные АИС 3</param> /// <returns></returns> public async Task <ModelPathReport> GenerateTemplateRule(UserRules userRule) { var report = new ModelPathReport(); try { return(await Task.Factory.StartNew(() => { var sql = new SelectSql(); var templateword = new TemplateUserRule(); var ruletemplate = new RuleTemplate() { SenderUsers = new SenderUsers() }; var modelselect = sql.SendersUsers(ref ruletemplate); sql.UserRuleModel(ref ruletemplate, userRule, modelselect); templateword.CreateDocum(_parametrService.ReportMassTemplate, ruletemplate, null); report.Note = "Заявки запущены и сохраняются в папку"; report.Url = _parametrService.ReportMassTemplate; return report; })); } catch (Exception e) { Loggers.Log4NetLogger.Error(e); report.Note = e.Message; return(report); } }
/// <summary> /// Модель пользователей и ролей xml /// </summary> /// <param name="path">Путь к файлу</param> /// <param name="userRules">Модель парсинга</param> public void AddRuleUsers(string path, UserRules userRules) { var doc = LogicaXml.LogicaXml.Document(path); XmlElement xRoot = doc.DocumentElement; XmlElement userrules = doc.CreateElement("User"); foreach (var user in userRules.User) { userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Number", user.Number)); userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Dates", user.Dates)); userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Fio", user.Fio)); userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Dolj", user.Dolj)); userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Otdel", user.Otdel)); userrules.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "SysName", user.SysName)); foreach (var rule in user.Rule) { var rulexml = doc.CreateElement("Rule"); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", rule.Name)); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Types", rule.Types)); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Pushed", rule.Pushed)); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "DateStart", rule.DateStart)); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "DateFinish", rule.DateFinish)); rulexml.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Context", rule.Context)); userrules.AppendChild(rulexml); } xRoot.AppendChild(userrules); } doc.Save(path); }
public void TestTemplateRule() { //var t = CultureInfo.CreateSpecificCulture("ru-Ru").DateTimeFormat.MonthGenitiveNames; ServiceRest rest = new ServiceRest(); var xml = new LibaryXMLAuto.ReadOrWrite.XmlReadOrWrite(); UserRules rule = (UserRules)xml.ReadXml("D:\\UserRule.xml", typeof(UserRules)); var t = rest.GenerateTemplateRule(rule); }
public HttpResponseMessage AlterUser(string email, string oldPassword, string newPassword) { string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); try { var rdr = GetUserDataReader(conn, email, null); while (rdr.Read()) { if (rdr[2].ToString() == "1") { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário Bloqueado")); } if (!UserRules.VerifyHash(oldPassword, "MD5", rdr[1].ToString())) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário e Senha Não Conferem")); } rdr.Close(); newPassword = UserRules.ComputeHash(newPassword, "MD5", null); MySqlCommand comandoAlterUser = new MySqlCommand("UPDATE TB_USUARIO SET SENHA = @SENHA WHERE EMAIL = @EMAIL;", conn); comandoAlterUser.Parameters.AddWithValue("@EMAIL", email); comandoAlterUser.Parameters.AddWithValue("@SENHA", newPassword); try { var exec = comandoAlterUser.ExecuteNonQuery(); if (exec == 1) { var newToken = Convert.ToBase64String(Guid.NewGuid().ToByteArray()); UserLoginController.AdicionarToken(rdr[0].ToString(), newToken, conn); return(Request.CreateResponse(HttpStatusCode.OK, newToken)); } else { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Houve um Erro ao Alterar seu Usário. Por Favor Entre em Contato com Nossa Central de Atendimento")); } } finally { } } return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário e Senha Não Conferem")); } finally { conn.Close(); } } }
public async Task Should_return_true_when_display_name_is_unique_for_existing_member() { using (var dbContext = new AtlasDbContext(Shared.CreateContextOptions())) { var sut = new UserRules(dbContext); var actual = await sut.IsDisplayNameUniqueAsync("Display Name", Guid.NewGuid()); Assert.IsTrue(actual); } }
public HttpResponseMessage AddUser(string email, string password, string nome, string sobrenome) { string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand comandoVerificarEmail = new MySqlCommand("SELECT SENHA, BLOQUEIO FROM TB_USUARIO WHERE EMAIL=@EMAIL", conn); comandoVerificarEmail.Parameters.AddWithValue("@EMAIL", email); try { MySqlDataReader rdr = comandoVerificarEmail.ExecuteReader(); while (rdr.Read()) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Email em Uso.")); } rdr.Close(); } finally { } MySqlCommand comando = new MySqlCommand("INSERT INTO TB_USUARIO(EMAIL, SENHA, BLOQUEIO) VALUES (@EMAIL, @SENHA, 0);", conn); comando.Parameters.AddWithValue("@EMAIL", email); comando.Parameters.AddWithValue("@SENHA", UserRules.ComputeHash(password, "MD5", null)); try { var exec = comando.ExecuteNonQuery(); if (exec == 1) { comando = new MySqlCommand("INSERT INTO TB_USUARIO_APLICATIVO(ID_USUARIO, NOME, SOBRENOME) VALUES " + "((SELECT ID FROM TB_USUARIO WHERE EMAIL = @EMAIL), @NOME, @SOBRENOME);", conn); comando.Parameters.AddWithValue("@EMAIL", email); comando.Parameters.AddWithValue("@NOME", nome); comando.Parameters.AddWithValue("@SOBRENOME", sobrenome); comando.ExecuteNonQuery(); return(Request.CreateResponse(HttpStatusCode.OK, Convert.ToBase64String(Guid.NewGuid().ToByteArray()))); } else { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Houve um Erro ao Adicionar seu Usário. Por Favor Entre em Contato com Nossa Central de Atendimento.")); } } finally { conn.Close(); } } }
/// <summary> /// Сохранение Отчета по миграции /// </summary> /// <param name="pathreport">Путь сохранения файла с ролями</param> /// <param name="userrule">Роли и пользователи</param> public static void CreateFileRule(string pathreport, UserRules userrule) { if (File.Exists(pathreport)) { XmlReadOrWrite read = new XmlReadOrWrite(); read.AddRuleUsers(pathreport, userrule); } else { var convert = new Converts.ConvettToXml.XmlConvert(); convert.SerializerClassToXml(pathreport, userrule, typeof(UserRules)); } }
public void Should_return_true_if_user_exists() { var id = Guid.NewGuid(); var repositoryMock = new Mock <IUserRepository>(); repositoryMock.Setup(x => x.GetById(id)).Returns(new User()); var sut = new UserRules(repositoryMock.Object); var actual = sut.DoesUserExist(id); Assert.AreEqual(true, actual); }
public void Should_return_true_if_user_id_is_unique() { var id = Guid.NewGuid(); var repositoryMock = new Mock <IUserRepository>(); repositoryMock.Setup(x => x.GetById(id)).Returns((User)null); var sut = new UserRules(repositoryMock.Object); var actual = sut.IsUserIdUnique(id); Assert.AreEqual(true, actual); }
public void Should_return_true_if_user_name_is_unique() { var userName = "******"; var repositoryMock = new Mock <IUserRepository>(); repositoryMock.Setup(x => x.GetByUserName(userName)).Returns((User)null); var sut = new UserRules(repositoryMock.Object); var actual = sut.IsUserNameUnique(userName); Assert.AreEqual(true, actual); }
public void Should_return_true_if_user_email_is_unique() { var email = "*****@*****.**"; var repositoryMock = new Mock <IUserRepository>(); repositoryMock.Setup(x => x.GetByEmail(email)).Returns((User)null); var sut = new UserRules(repositoryMock.Object); var actual = sut.IsUserEmailUnique(email); Assert.AreEqual(true, actual); }
public void TestTemplateRule() { ServiceRest rest = new ServiceRest(); var xml = new LibaryXMLAuto.ReadOrWrite.XmlReadOrWrite(); UserRules rule = (UserRules)xml.ReadXml("C:\\UserRule.xml", typeof(UserRules)); var groupelement = rule.User.Where(x => x.Number != "Скрипт").GroupBy(x => new { x.Dates, x.Number, x.Otdel }).Select(x => new { x.Key.Number, x.Key.Dates, x.Key.Otdel }).ToList(); int i = 0; foreach (var gr in groupelement) { //if (template.Otdel == null) //{ // template.Otdel = new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Otdel[groupelement.Count]; //} //template.Otdel[i] = Inventarization.Database.SqlQuery<LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Otdel>(sqlselect.LogicaSelect.SelectUser, new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[0], 1), // new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[1], gr.Otdel.Replace("№ ", "№")), // new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[2], gr.Number)).ToList()[0]; //template.Otdel[i].Dates = gr.Dates; var user = rule.User.Where(userrule => (userrule.Dates == gr.Dates) && (userrule.Number == gr.Number) && (userrule.Otdel == gr.Otdel)).Select(u => new { u.Dates, u.Fio, u.SysName, u.Dolj, u.Otdel, u.Number }).Distinct().ToList(); //int j = 0; foreach (var userule in user) { var ruleall = rule.User.Where(u => u.Dates == userule.Dates && u.Dolj == userule.Dolj && u.Otdel == userule.Otdel && u.Fio == userule.Fio && u.SysName == userule.SysName && u.Number == userule.Number). Select(x => x.Rule).Aggregate((element, next) => element.Concat(next).ToArray()); ruleall.Select(elem => $"{elem.Types}: {elem.Name}").Aggregate( (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next); // var elemt = ruleall.ToList() //.Select(elem => $"{elem.Types}: {elem.Name}").Aggregate( // (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next) //if (template.Otdel[i].Users == null) //{ // template.Otdel[i].Users = new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users[user.Count]; //} //template.Otdel[i].Users[j] = Inventarization.Database.SqlQuery<LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users>(sqlselect.LogicaSelect.SelectUser, new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[0], 2), // new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[1], userule.SysName.Split('@')[0]), // new SqlParameter(sqlselect.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).ToList()[0]; //template.Otdel[i].Users[j].RuleTemplate = userule.Rule.Select(elem => $"{elem.Types}: {elem.Name}").Aggregate( // (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next); //template.Otdel[i].Users[j].Pushed = userule.Rule[0].Pushed; //j++; } i++; } }
public void Should_return_false_if_user_email_is_not_unique_for_existing_users() { var userId = Guid.NewGuid(); var email = "*****@*****.**"; var repositoryMock = new Mock <IUserRepository>(); repositoryMock.Setup(x => x.GetByEmail(email)).Returns(new User()); var sut = new UserRules(repositoryMock.Object); var actual = sut.IsUserEmailUnique(email, userId); Assert.AreEqual(false, actual); }
public HttpResponseMessage Login(UserModels user, string crm = null) { string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; string joinCrm = string.Empty; string loginCrm = string.Empty; if (!string.IsNullOrEmpty(crm)) { joinCrm = "JOIN TB_USUARIO_CLINICA CLI ON USU.ID = CLI.ID_USUARIO"; loginCrm = "AND CLI.CRM = @CRM"; } using (MySqlConnection conn = new MySqlConnection(connectionString)) { MySqlCommand comando = new MySqlCommand("SELECT USU.SENHA, USU.BLOQUEIO FROM TB_USUARIO USU " + joinCrm + " WHERE USU.EMAIL=@EMAIL " + loginCrm, conn); comando.Parameters.AddWithValue("@EMAIL", user.email); comando.Parameters.AddWithValue("@CRM", crm ?? string.Empty); try { conn.Open(); MySqlDataReader rdr = comando.ExecuteReader(); while (rdr.Read()) { if (rdr[1].ToString() == "1") { return(Request.CreateResponse(HttpStatusCode.OK, "Usuário Bloqueado.")); } if (!UserRules.VerifyHash(user.senha, "MD5", rdr[0].ToString())) { return(Request.CreateResponse(HttpStatusCode.OK, "Usuário/Senha Inválido.")); } else { return(Request.CreateResponse(HttpStatusCode.OK, user)); } } return(Request.CreateResponse(HttpStatusCode.OK, "Usuário/Senha Inválido.")); } finally { conn.Close(); } } }
public async Task Should_return_false_when_display_name_is_not_unique() { var options = Shared.CreateContextOptions(); var displayName = "Display Name"; using (var dbContext = new AtlasDbContext(options)) { var user = new User(Guid.NewGuid().ToString(), "*****@*****.**", displayName); dbContext.Users.Add(user); await dbContext.SaveChangesAsync(); } using (var dbContext = new AtlasDbContext(options)) { var sut = new UserRules(dbContext); var actual = await sut.IsDisplayNameUniqueAsync(displayName); Assert.IsFalse(actual); } }
public HttpResponseMessage Login(string email, string password, string crm = null) { HttpResponseMessage retorno = new HttpResponseMessage(); string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connectionString)) { try { conn.Open(); var rdr = GetUserDataReader(conn, email, crm); if (rdr.Read()) { if (rdr[2].ToString() == "1") { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário Bloqueado.")); } if (!UserRules.VerifyHash(password, "MD5", rdr[1].ToString())) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário/Senha Inválido.")); } else { var id_user = rdr[0].ToString(); rdr.Close(); var newToken = Convert.ToBase64String(Guid.NewGuid().ToByteArray()); UserLoginController.AdicionarToken(id_user, newToken, conn); return(Request.CreateResponse(HttpStatusCode.OK, newToken)); } } return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário/Senha Inválido.")); } finally { conn.Close(); } } }
public void AddUserProcedure(string login, string hash, string email = null, long?phone = null, UserRules rules = UserRules.USER) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(hash)) { throw new Exception($"Invalid parametr '{login}', '{hash}'"); //Log("Invalid parametr '{login}', '{hash}') } var query = "dbo.login_insert @login, @hash, @email, @rules, @phone"; //List<Logins> user = new List<Logins>(); //user.Add(new Logins { Login = login, Hash = hash}); Connection.Open(); var output = Connection.Query("dbo.login_insert @login, @hash, @email, @rules, @phone", new { login, hash, email, phone, Rules = (byte)rules }); Connection.Close(); if (output.Count() == 1) { Console.WriteLine($" fail such a name already exists: {login}"); //log } Console.WriteLine($"LoginRepository::AddUser::Query: {query}"); //log }
public async Task Should_return_false_when_display_name_is_not_unique_for_existing_member() { var options = Shared.CreateContextOptions(); var userId = Guid.NewGuid(); using (var dbContext = new AtlasDbContext(options)) { var user1 = new User(Guid.NewGuid().ToString(), "*****@*****.**", "User 1"); var user2 = new User(userId, Guid.NewGuid().ToString(), "*****@*****.**", "User 2"); dbContext.Users.Add(user1); dbContext.Users.Add(user2); await dbContext.SaveChangesAsync(); } using (var dbContext = new AtlasDbContext(options)) { var sut = new UserRules(dbContext); var actual = await sut.IsDisplayNameUniqueAsync("User 1", userId); Assert.IsFalse(actual); } }
/// <summary> /// Вытягивание данных на отдел и пользователей /// </summary> /// <param name="template">Шаблон раскладки</param> /// <param name="userRule">Данные ролей из АИС 3</param> /// <param name="sqlSelect">Запрос к БД для выборки данных</param> public void UserRuleModel(ref RuleTemplate template, UserRules userRule, ModelSelect sqlSelect) { var groupElement = userRule.User.Where(x => x.Number != "Скрипт").Select(x => new { x.Dates, x.Number, Otdel = x.Otdel.Replace("№ ", "№") }).GroupBy(x => new { x.Dates, x.Number, x.Otdel }).Select(x => new { x.Key.Number, x.Key.Dates, x.Key.Otdel }).ToList(); int i = 0; foreach (var gr in groupElement) { if (template.Otdel == null) { template.Otdel = new Otdel[groupElement.Count]; } template.Otdel[i] = Inventory.Database.SqlQuery <Otdel>( sqlSelect.LogicaSelect.SelectUser, new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 1), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1], gr.Otdel.Replace("№ ", "№")), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2], gr.Number)).FirstOrDefault() ?? new Otdel() { Number = gr.Number, NameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3", RnameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3", SmallName = "Отсутствует", NamePosition = "Отсутствует" }; template.Otdel[i].Dates = gr.Dates; var user = userRule.User.Where(userRole => (userRole.Dates == gr.Dates) && (userRole.Number == gr.Number) && (userRole.Otdel.Replace("№ ", "№") == gr.Otdel)).Select(u => new { u.Dates, u.Fio, u.SysName, u.Dolj, Otdel = u.Otdel.Replace("№ ", "№"), u.Number }).Distinct().ToList(); int j = 0; foreach (var userRole in user) { var roleAll = userRule.User.Where(u => u.Dates == userRole.Dates && u.Dolj == userRole.Dolj && u.Otdel.Replace("№ ", "№") == userRole.Otdel && u.Fio == userRole.Fio && u.SysName == userRole.SysName && u.Number == userRole.Number). Select(x => x.Rule).Aggregate((element, next) => element.Concat(next).ToArray()); if (template.Otdel[i].Users == null) { template.Otdel[i].Users = new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users[user.Count]; } template.Otdel[i].Users[j] = Inventory.Database.SqlQuery <LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users>(sqlSelect.LogicaSelect.SelectUser, new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 2), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1], userRole.SysName.Split('@')[0]), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault() ?? new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users() { Name = userRole.Fio, NamePosition = userRole.Dolj, IpAdress = null, Tabel = $"regions\\{userRole.SysName.Split('@')[0]}", NumberKabinet = null, RuleTemplate = null }; template.Otdel[i].Users[j].RuleTemplate = roleAll.Select(elem => $"{elem.Types}: {elem.Name}").Aggregate( (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next); template.Otdel[i].Users[j].Pushed = roleAll[0].Pushed; j++; } i++; } }
public HttpResponseMessage RememberUser(string email) { string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand comandoVerificarEmail = new MySqlCommand("SELECT ID FROM TB_USUARIO WHERE EMAIL=@EMAIL", conn); comandoVerificarEmail.Parameters.AddWithValue("@EMAIL", email); try { MySqlDataReader rdr = comandoVerificarEmail.ExecuteReader(); while (rdr.Read()) { try { var id_user = rdr[0].ToString(); rdr.Close(); MySqlCommand comandoDeletarToken = new MySqlCommand("DELETE FROM TB_RECUPERAR_SENHA WHERE ID_USUARIO=@IDUSUARIO", conn); comandoDeletarToken.Parameters.AddWithValue("@IDUSUARIO", id_user); comandoDeletarToken.ExecuteNonQuery(); // Gerando código chave para usuário recuperar senha string userRememberPass = UserRules.RememberPassGenerator(); MailMessage mail = new MailMessage(); SmtpClient client = new SmtpClient(); MailAddress fromAddress = new MailAddress("*****@*****.**", "NoReply"); MailAddress toAddress = new MailAddress(email, "Aqui vai o Ususário"); client.Port = 587; client.Host = "smtp.kinghost.net"; client.EnableSsl = false; client.Timeout = 100000; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("*****@*****.**", "emaildeenvio12"); mail.From = fromAddress; mail.To.Add(toAddress); mail.Subject = "Recuperação de senha : Usuário " + email; mail.Body = "Para gerar sua nova senha digite o seguinte código no seu aplicativo : " + userRememberPass; mail.BodyEncoding = UTF8Encoding.UTF8; mail.SubjectEncoding = System.Text.Encoding.Default; mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mail); MySqlCommand comandoInserirToken = new MySqlCommand("INSERT INTO TB_RECUPERAR_SENHA (ID_USUARIO, TOKEN) VALUES (@IDUSUARIO, @TOKEN)", conn); comandoInserirToken.Parameters.AddWithValue("@IDUSUARIO", id_user); comandoInserirToken.Parameters.AddWithValue("@TOKEN", UserRules.ComputeHash(userRememberPass, "MD5", null)); comandoInserirToken.ExecuteNonQuery(); return(Request.CreateResponse(HttpStatusCode.OK, "Email enviado. Digite o Token enviado e sua nova senha.")); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Erro ao enviar emai. Por favor verifique seu usuário.")); } } return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Erro ao enviar emai. Por favor verifique seu usuário.")); rdr.Close(); } finally { conn.Close(); } } }
public HttpResponseMessage AlterRememberUser(string email, string novaSenha, string token) { string connectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); MySqlCommand comandoVerificarEmail = new MySqlCommand("SELECT ID FROM TB_USUARIO WHERE EMAIL=@EMAIL", conn); comandoVerificarEmail.Parameters.AddWithValue("@EMAIL", email); try { MySqlDataReader rdr = comandoVerificarEmail.ExecuteReader(); while (rdr.Read()) { try { var id_user = rdr[0].ToString(); rdr.Close(); MySqlCommand comandoGetToken = new MySqlCommand("SELECT TOKEN FROM TB_RECUPERAR_SENHA WHERE ID_USUARIO=@IDUSUARIO", conn); comandoGetToken.Parameters.AddWithValue("@IDUSUARIO", id_user); rdr = comandoGetToken.ExecuteReader(); if (rdr.HasRows) { while (rdr.Read()) { if (UserRules.VerifyHash(token, "MD5", rdr[0].ToString())) { rdr.Close(); MySqlCommand comandoDeletarToken = new MySqlCommand("DELETE FROM TB_RECUPERAR_SENHA WHERE ID_USUARIO=@IDUSUARIO", conn); comandoDeletarToken.Parameters.AddWithValue("@IDUSUARIO", id_user); comandoDeletarToken.ExecuteNonQuery(); MySqlCommand comandoAlterUser = new MySqlCommand("UPDATE TB_USUARIO SET SENHA = @SENHA WHERE EMAIL = @EMAIL;", conn); comandoAlterUser.Parameters.AddWithValue("@EMAIL", email); comandoAlterUser.Parameters.AddWithValue("@SENHA", UserRules.ComputeHash(novaSenha, "MD5", null)); try { var exec = comandoAlterUser.ExecuteNonQuery(); if (exec == 1) { UserLoginController.DeletarToken(id_user, conn); return(Request.CreateResponse(HttpStatusCode.OK, "Usuário Alterado com Sucesso")); } else { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Houve um Erro ao Alterar seu Usário. Por Favor Entre em Contato com Nossa Central de Atendimento")); } } catch { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Houve um Erro ao Alterar seu Usário. Por Favor Entre em Contato com Nossa Central de Atendimento")); } } else { return(Request.CreateResponse(HttpStatusCode.Forbidden, "Token inválido. Verifique se o digitou corretamente.")); } } } else { RememberUser(email); return(Request.CreateResponse(HttpStatusCode.Forbidden, "Não há token para seu Usuário. Foi enviado um ao seu email.")); } } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Erro ao enviar emai. Por favor verifique seu usuário.")); } } return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Erro ao enviar emai. Por favor verifique seu usuário.")); } finally { conn.Close(); } } }
public UsersController(UserRules rules, ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger <AccountsController>(); _rules = rules; }
public void Load(){ UserRules = new UserRules(); AuthorRules = new AuthorRules(); }
/// <summary> /// Вытягивание данных на отдел и пользователей /// </summary> /// <param name="template">Шаблон раскладки</param> /// <param name="userRule">Данные ролей из АИС 3</param> /// <param name="sqlSelect">Запрос к БД для выборки данных</param> public void UserRuleModel(ref RuleTemplate template, UserRules userRule, ModelSelect sqlSelect) { //Группируем по номеру, отделу, дате и назначению var groupElement = userRule.User.Where(x => x.Number != "Скрипт").SelectMany(x => x.Rule, (u, r) => new { u, r }).GroupBy(x => new { x.r.Pushed, x.u.Dates, x.u.Number, x.u.Otdel }) .Select(x => new { x.Key.Number, x.Key.Dates, x.Key.Otdel, x.Key.Pushed }).ToList(); int i = 0; foreach (var gr in groupElement) { if (template.Otdel == null) { template.Otdel = new Otdel[groupElement.Count]; } template.Otdel[i] = Inventory.Database.SqlQuery <Otdel>( sqlSelect.LogicaSelect.SelectUser, new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 1), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1], gr.Otdel.Replace("№ ", "№")), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2], gr.Number)).FirstOrDefault() ?? new Otdel() { Number = gr.Number, NameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3", RnameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3", SmallName = "Отсутствует", NamePosition = "Отсутствует" }; template.Otdel[i].Dates = Convert.ToDateTime(gr.Dates); template.Otdel[i].DateStatement = Convert.ToDateTime(gr.Dates).AddWorkdays(-1); var user = userRule.User.SelectMany(x => x.Rule, (u, r) => new { u, r }).Where(userRole => (userRole.u.Dates == gr.Dates) && (userRole.u.Number == gr.Number) && (userRole.r.Pushed == gr.Pushed) && (userRole.u.Otdel.Replace("№ ", "№") == gr.Otdel.Replace("№ ", "№")) ).Select(mussel => new { mussel.u.Dates, mussel.u.Fio, mussel.u.SysName, mussel.u.Dolj, Otdel = mussel.u.Otdel.Replace("№ ", "№"), mussel.u.Number }).Distinct().ToList(); int j = 0; foreach (var userRole in user) { var roleAll = userRule.User.Where(u => u.Dates == userRole.Dates && u.Dolj == userRole.Dolj && u.Otdel.Replace("№ ", "№") == userRole.Otdel && u.Fio == userRole.Fio && u.SysName == userRole.SysName && u.Number == userRole.Number). Select(x => x.Rule.Where(r => r.Pushed == gr.Pushed)).Aggregate((element, next) => element.Concat(next).ToArray()).ToArray(); if (template.Otdel[i].Users == null) { template.Otdel[i].Users = new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users[user.Count]; } template.Otdel[i].Users[j] = Inventory.Database.SqlQuery <LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users>(sqlSelect.LogicaSelect.SelectUser, new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 2), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1], userRole.SysName.Split('@')[0]), new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault() ?? new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users() { NameUser = userRole.Fio, NamePosition = userRole.Dolj, IpAdress = null, Tabel = $"regions\\{userRole.SysName.Split('@')[0]}", NumberKabinet = null, RuleTemplate = null }; template.Otdel[i].Users[j].RuleTemplate = roleAll.Select(elem => $"{elem.Types}: {elem.Name} {((string.IsNullOrWhiteSpace(elem.DateFinish) || elem.Pushed == "Отзыв") ? null :" - " + elem.DateFinish)}").Aggregate( (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next); template.Otdel[i].Users[j].Pushed = roleAll[0].Pushed; j++; } i++; } }