Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        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();
                }
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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();
                }
            }
        }
Exemplo n.º 7
0
 /// <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));
     }
 }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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++;
            }
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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();
                }
            }
        }
Exemplo n.º 15
0
        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);
            }
        }
Exemplo n.º 16
0
        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();
                }
            }
        }
Exemplo n.º 17
0
        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
        }
Exemplo n.º 18
0
        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);
            }
        }
Exemplo n.º 19
0
        /// <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++;
            }
        }
Exemplo n.º 20
0
        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();
                }
            }
        }
Exemplo n.º 21
0
        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();
                }
            }
        }
Exemplo n.º 22
0
 public UsersController(UserRules rules, ILoggerFactory loggerFactory)
 {
     _logger = loggerFactory.CreateLogger <AccountsController>();
     _rules  = rules;
 }
Exemplo n.º 23
0
		public void Load(){

			UserRules = new UserRules();
			AuthorRules = new AuthorRules();
		}
Exemplo n.º 24
0
        /// <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++;
            }
        }