Esempio n. 1
0
        public async Task <IActionResult> GravaArquivo(int id, string file)
        {
            var usuario = new UsuarioModel()
            {
                LoginUser = "******", Email = "*****@*****.**"
            };

            var senha = Uteis.GeraSenha();

            //checando existência de usuário
            var _userExistent = await _userManager.FindByNameAsync(usuario.LoginUser);

            if (_userExistent != null)
            {
                throw new Exception($"usuário {usuario.LoginUser} já existente");
            }

            //montagem do usuário
            var user = new IdentityUser {
                UserName = usuario.LoginUser, Email = usuario.Email, LockoutEnabled = true,
            };
            var usuarioid = 2;

            //criando o usuário
            var criacaoUser = await _userManager.CreateAsync(user, Uteis.GeraSenha());

            if (criacaoUser.Succeeded)
            {
                user = await _userManager.FindByNameAsync(usuario.LoginUser);

                //adicionando as claims
                var _resultClaim = await _userManager.AddClaimsAsync(user, new List <Claim> {
                    new Claim(JwtClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.Role, "Usuario"),
                    new Claim("clienteid", "1"),
                    new Claim("usuarioid", usuarioid.ToString())
                });

                //adicionando o usuário a role
                await _userManager.AddToRoleAsync(user, "Usuario");
            }


            return(Ok(new LoginViewModel()
            {
                Username = "******", Password = "******"
            }));
        }
Esempio n. 2
0
        public async Task <IActionResult> AdicionaItemAsync([FromBody] IEnumerable <FornecedorModel> t)
        {
            IActionResult res = null;
            var           b   = new BaseEntityDTO <FornecedorModel>()
            {
                Start = DateTime.Now, Itens = t.Count()
            };

            try
            {
                var f = t.ElementAt(0);


                foreach (var item in f.Contatos)
                {
                    if (!string.IsNullOrEmpty(item.Email))
                    {
                        if (!Util.RegexEmail.IsMatch(item.Email))
                        {
                            throw new Exception($"Email {item.Email} com formato inválido");
                        }

                        if (_userManager.FindByEmailAsync(item.Email).GetAwaiter().GetResult() != null)
                        {
                            throw new Exception($"Email {item.Email} já existente no sistema");
                        }
                    }
                }


                if (f.CPFCNPJ.Length == 11)
                {
                    if (!Util.ValidarCPF(f.CPFCNPJ))
                    {
                        throw new Exception($"Erro no CPF {f.CPFCNPJ} informado");
                    }
                }
                else if (f.CPFCNPJ.Length == 14)
                {
                    if (!Util.ValidaCnpj(f.CPFCNPJ))
                    {
                        throw new Exception($"Erro no CNPJ {f.CPFCNPJ} informado");
                    }
                }



                //checando existência de usuário
                var _userExistent = await _userManager.FindByNameAsync(f.CPFCNPJ);

                if (_userExistent != null)
                {
                    throw new Exception($"usuário com login: {f.CPFCNPJ} já existente");
                }



                var senha = Uteis.GeraSenha();

                //montagem do usuário
                var user = new IdentityUser {
                    UserName = f.CPFCNPJ, Email = f.Contatos.ElementAt(0).Email, LockoutEnabled = true, EmailConfirmed = true
                };
                var fornecedorid = await new FornecedorRepository().AddItem(f, 0, null);



                //criando o usuário
                var criacaoUser = await _userManager.CreateAsync(user, senha);


                if (criacaoUser.Succeeded)
                {
                    user = await _userManager.FindByNameAsync(f.CPFCNPJ);

                    //adicionando as claims
                    var _resultClaim = await _userManager.AddClaimsAsync(user, new List <Claim> {
                        new Claim(JwtClaimTypes.Email, user.Email),
                        new Claim(ClaimTypes.Role, "Fornecedor"),
                        new Claim("fornecedorid", fornecedorid.ToString())
                    });

                    //adicionando o usuário a role
                    await _userManager.AddToRoleAsync(user, "Fornecedor");

                    await Util.SendEmailAsync(new EmailViewModel[] { new EmailViewModel(user.Email) }, "Novo Cadastro Moneo", Emails.NovoCadastro(), true, TipoEmail.NOVOCADASTRO);


                    b.End = DateTime.Now;
                    res   = Ok(b);
                }
            }
            catch (Exception err)
            {
                b.End   = DateTime.Now;
                b.Error = (err.InnerException ?? err).Message;
                res     = BadRequest(b);
            }
            return(res);
        }
Esempio n. 3
0
        public async Task <IActionResult> ResetPassword([FromBody] LoginViewModel l)
        {
            IActionResult res = null;
            var           _b  = new BaseEntityDTO <string>()
            {
                Start = DateTime.Now
            };

            try
            {
                var existUser = await _userManager.FindByEmailAsync(l.Email);

                if (existUser == null)
                {
                    throw new Exception($"{l.Email} não encontrado");
                }

                if (!existUser.LockoutEnabled)
                {
                    throw new Exception("Usuário inativo no sistema");
                }


                l.Username = existUser.UserName;
                //existUser.Email = "*****@*****.**";

                //tokenResponse.AccessToken
                string senha = Uteis.GeraSenha();
                var    guid  = Guid.NewGuid().ToString();


                await repository.Add(new UsersResetPasswordModel[] { new UsersResetPasswordModel()
                                                                     {
                                                                         Token        = guid,
                                                                         SenhaTrocada = false,
                                                                         LoginUser    = l.Username
                                                                     } }, ClienteID, UsuarioID);


                // existUser.Email = "*****@*****.**";

                await Util.SendEmailAsync(
                    new EmailViewModel[] { new EmailViewModel(existUser.Email) },
                    "Senha zerada",
                    Emails.RedefinicaoSenha($"{Util.Configuration["UrlIdentity"]}redefine-senha/{guid}"),
                    true,
                    TipoEmail.RESETSENHA);

                _b.Result = $"Email encaminhado pra {l.Email} com o link pra reset da senha";
                _b.End    = DateTime.Now;
                _b.Itens  = 1;
                res       = Ok(_b);
            }
            catch (Exception err)
            {
                _b.End   = DateTime.Now;
                _b.Error = (err.InnerException ?? err).Message;
                res      = BadRequest(_b);
            }

            return(res);
        }
Esempio n. 4
0
        public async Task <IActionResult> TokenAuthentication([FromBody] LoginViewModel m)
        {
            IActionResult res = null;
            var           _b  = new BaseEntityDTO <LoginViewModel>()
            {
                Start = DateTime.Now, Itens = 1
            };

            try
            {
                var _urp = new UsersResetPasswordModel()
                {
                    Token = m.Token
                };

                var t = await new UsersResetPasswordRepository().FindById(_urp, null);

                if (t == null)
                {
                    throw new Exception($"Link expirado para redefinição de senha");
                }

                var existUser = await _userManager.FindByNameAsync(t.LoginUser);

                if (existUser == null)
                {
                    throw new Exception($"Usuário não encontrado");
                }

                string tokenPassword = await _userManager.GeneratePasswordResetTokenAsync(existUser);

                await _userManager.ResetAccessFailedCountAsync(existUser);

                string senha = Uteis.GeraSenha();

                var result = await _userManager.ResetPasswordAsync(existUser, tokenPassword, senha);

                if (!result.Succeeded)
                {
                    throw new Exception("Houve um erro ao tentar zerar a senha");
                }

                result = await _userManager.ChangePasswordAsync(existUser, senha, m.Password);

                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}"));
                }

                await repository.Update(new UsersResetPasswordModel[] { new UsersResetPasswordModel()
                                                                        {
                                                                            Token        = m.Token,
                                                                            SenhaTrocada = true,
                                                                            LoginUser    = t.LoginUser
                                                                        } }, 0, null);

                m.Username = existUser.UserName;

                _b.Result = await AutenticaLogin(m, existUser);

                _b.End   = DateTime.Now;
                _b.Itens = 1;
                res      = Ok(_b);
            }
            catch (Exception err)
            {
                _b.End   = DateTime.Now;
                _b.Error = (err.InnerException ?? err).Message;
                res      = BadRequest(_b);
            }

            return(res);
        }
Esempio n. 5
0
        public async Task <IActionResult> GravaAvulso()
        {
            try
            {
                ContatoModel[] contato = { new ContatoModel()
                                           {
                                               Celular = 71981273460, Email = "*****@*****.**"
                                           } };

                var cliente = new ClienteModel()
                {
                    Contatos = contato, CNPJ = "07459196000126"
                };

                if (string.IsNullOrEmpty(cliente.Contatos.ElementAt(0).Email))
                {
                    throw new Exception($"Cliente sem e-mail informado pra cadastro");
                }

                var senha = Uteis.GeraSenha();

                //checando existência de usuário
                var _userExistent = await _userManager.FindByNameAsync(cliente.CNPJ);

                if (_userExistent != null)
                {
                    throw new Exception($"usuário {cliente.CNPJ} já existente");
                }

                //montagem do usuário
                var user = new IdentityUser {
                    UserName = cliente.CNPJ, Email = cliente.Contatos.ElementAt(0).Email, LockoutEnabled = true, EmailConfirmed = true
                };
                var clienteid = 1;

                //criando o usuário
                var criacaoUser = await _userManager.CreateAsync(user, Uteis.GeraSenha());


                if (criacaoUser.Succeeded)
                {
                    user = await _userManager.FindByNameAsync(cliente.CNPJ);

                    //adicionando as claims
                    var _resultClaim = await _userManager.AddClaimsAsync(user, new List <Claim> {
                        new Claim(JwtClaimTypes.Email, user.Email),
                        new Claim(ClaimTypes.Role, "Cliente"),
                        new Claim("clienteid", clienteid.ToString())
                    });

                    //adicionando o usuário a role
                    await _userManager.AddToRoleAsync(user, "Cliente");
                }
                else
                {
                    throw new Exception(criacaoUser.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}"));
                }
            }
            catch (Exception err)
            {
                throw err;
            }
            return(Ok());
        }
Esempio n. 6
0
        public async Task <IActionResult> AdicionaItemAsync([FromBody] IEnumerable <ClienteModel> t)
        {
            IActionResult res = null;
            var           b   = new BaseEntityDTO <string>()
            {
                Start = DateTime.Now, Itens = t.Count()
            };

            var cliente = t.ElementAt(0);

            try
            {
                if (cliente.Contatos == null || !cliente.Contatos.Any())
                {
                    if (Util.RegexEmail.IsMatch(cliente.Email))
                    {
                        cliente.Contatos = new ContatoModel[] { new ContatoModel()
                                                                {
                                                                    Celular = cliente.Telefone, Email = cliente.Email
                                                                } }
                    }
                    ;
                    else
                    {
                        throw new Exception("E-mail inválido");
                    }
                }


                if (!Util.ValidaCnpj(cliente.CNPJ))
                {
                    throw new Exception("CNPJ inválido");
                }


                foreach (var item in cliente.Contatos)
                {
                    if (!string.IsNullOrEmpty(item.Email))
                    {
                        if (!Util.RegexEmail.IsMatch(item.Email))
                        {
                            throw new Exception($"Email {item.Email} com formato inváldo");
                        }

                        if (_userManager.FindByEmailAsync(item.Email).GetAwaiter().GetResult() != null)
                        {
                            throw new Exception($"Email {item.Email} já existente no sistema");
                        }
                    }
                }


                var senha = Uteis.GeraSenha();

                //checando existência de usuário
                var _userExistent = await _userManager.FindByNameAsync(cliente.CNPJ);

                if (_userExistent != null)
                {
                    throw new Exception($"usuário com login: {cliente.CNPJ} já existente");
                }



                //montagem do usuário
                var user = new IdentityUser {
                    UserName = cliente.CNPJ, Email = cliente.Contatos.Where(a => !string.IsNullOrEmpty(a.Email)).ElementAt(0).Email, LockoutEnabled = true, EmailConfirmed = true
                };
                cliente.ClienteID = await new ClienteRepository().AddCliente(t);

                //criando o usuário
                var criacaoUser = await _userManager.CreateAsync(user, Uteis.GeraSenha());


                if (criacaoUser.Succeeded)
                {
                    user = await _userManager.FindByNameAsync(cliente.CNPJ);

                    var claims = new List <Claim> {
                        new Claim(JwtClaimTypes.Email, user.Email),
                        new Claim(ClaimTypes.Role, "Cliente"),
                        new Claim("clienteid", cliente.ClienteID.ToString())
                    };

                    //adicionando as claims
                    var _resultClaim = await _userManager.AddClaimsAsync(user, claims);



                    //adicionando o usuário a role
                    await _userManager.AddToRoleAsync(user, "Cliente");

                    await Util.SendEmailAsync(new EmailViewModel[] { new EmailViewModel(user.Email) }, "Novo Cadastro Moneo", Emails.NovoCadastro(), true, TipoEmail.NOVOCADASTRO);
                }
                else
                {
                    //DuplicateEmail
                    if (criacaoUser.Errors.Contains(new IdentityError()
                    {
                        Code = "DuplicateEmail"
                    }))
                    {
                        throw new Exception($"E-mail {user.Email} já existente no sistema");
                    }

                    throw new Exception(criacaoUser.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}"));
                }

                b.Result = $"Cliente cadastrado com sucesso. Senha gerada: {senha}";
                b.End    = DateTime.Now;
                res      = Ok(b);
            }
            catch (Exception err)
            {
                b.End   = DateTime.Now;
                b.Error = (err.InnerException ?? err).Message;


                if (b.Error.Contains("IX_EMAIL_CLIENTES_EMAIL_UNIQUE"))
                {
                    b.Error = "Um ou mais e-mails informados, já existente no sistema";
                }

                if (b.Error.Contains("IX_CLIENTES"))
                {
                    b.Error = $"Cliente com o CNPJ: {t.ElementAt(0).CNPJ} já existente na base";
                }


                //await new ClienteRepository().Remove(new ClienteModel[] { new ClienteModel() { ClienteID = cliente.ClienteID } }, 0, null);


                res = BadRequest(b);
            }
            return(res);
        }
Esempio n. 7
0
        public async Task <IActionResult> AdicionaItemAsync([FromBody] IEnumerable <UsuarioModel> t)
        {
            IActionResult res = null;
            var           b   = new BaseEntityDTO <string>()
            {
                Start = DateTime.Now, Itens = t.Count()
            };
            int usuarioid = 0;

            try
            {
                var usuario   = t.ElementAt(0);
                var validator = new UsuarioModelValidator();
                var result    = await validator.ValidateAsync(t.ElementAt(0));


                if (!result.IsValid)
                {
                    throw new Exception(result.Errors.Select(a => a.ErrorMessage).Aggregate((a, k) => $"{a},{k}"));
                }

                if (!Util.RegexEmail.IsMatch(usuario.Email))
                {
                    throw new Exception("Email inválido");
                }



                var senha = Uteis.GeraSenha();

                //checando existência de usuário
                var _userExistent = await _userManager.FindByNameAsync(usuario.LoginUser);

                if (_userExistent != null)
                {
                    //await _userManager.DeleteAsync(_userExistent);
                    throw new Exception($"usuário {usuario.LoginUser} já existente");
                }

                _userExistent = await _userManager.FindByEmailAsync(usuario.Email);


                if (_userExistent != null)
                {
                    throw new Exception($"usuário com e-mail {usuario.Email} já cadastrado no sistema");
                }


                //montagem do usuário
                var user = new IdentityUser {
                    UserName = usuario.LoginUser, Email = usuario.Email, LockoutEnabled = true, PhoneNumber = usuario.Telefone.ToString(), EmailConfirmed = true
                };

                usuarioid = await new UsuarioRepository().Add(usuario, ClienteID, UsuarioID);

                //criando o usuário
                var criacaoUser = await _userManager.CreateAsync(user, Uteis.GeraSenha());

                if (criacaoUser.Succeeded)
                {
                    user = await _userManager.FindByNameAsync(usuario.LoginUser);

                    await _userManager.AddClaimsAsync(user, new List <Claim> {
                        new Claim(JwtClaimTypes.Email, user.Email),
                        new Claim(ClaimTypes.Role, "Usuario"),
                        new Claim(ClaimTypes.GroupSid, usuario.GrupoUsuario.GrupoUsuarioID.ToString()),
                        new Claim("clienteid", ClienteID.ToString()),
                        new Claim("usuarioid", usuarioid.ToString())
                    });

                    //adicionando o usuário a role
                    await _userManager.AddToRoleAsync(user, "Usuario");

                    var guid = Guid.NewGuid().ToString();

                    await _usersPasswordRepo.Add(new UsersResetPasswordModel[] { new UsersResetPasswordModel()
                                                                                 {
                                                                                     Token        = guid,
                                                                                     SenhaTrocada = false,
                                                                                     LoginUser    = usuario.LoginUser
                                                                                 } }, ClienteID, UsuarioID);

                    //encaminhando um e-mail ao usuário após o cadastro
                    await Util.SendEmailAsync(
                        new EmailViewModel[] { new EmailViewModel(user.Email, usuario.Nome) },
                        "Novo Usuário Moneo",
                        Emails.NovoUsuario(usuario.LoginUser, $"{Util.Configuration["UrlIdentity"]}redefine-senha/{guid}"),
                        true,
                        TipoEmail.NOVOCADASTRO);
                }
                else
                {
                    throw new Exception(criacaoUser.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}"));
                }



                b.Result = $"usuário {user.UserName} gravado com sucesso";
                b.End    = DateTime.Now;
                res      = Ok(b);
            }
            catch (Exception err)
            {
                if (usuarioid > 0)
                {
                    await new UsuarioRepository().ExcluirItensAsyncAfected(new UsuarioModel[] { new UsuarioModel()
                                                                                                {
                                                                                                    UsuarioID = usuarioid
                                                                                                } }, ClienteID, UsuarioID).ContinueWith(async(k) =>
                    {
                        if (!k.IsFaulted)
                        {
                            if (k.Result > 0)
                            {
                                var _user = await _userManager.FindByNameAsync(t.ElementAt(0).LoginUser);
                                if (_user != null)
                                {
                                    await _userManager.DeleteAsync(_user);
                                }
                            }
                        }
                    });
                }
                b.End   = DateTime.Now;
                b.Error = (err.InnerException ?? err).Message;

                if (b.Error.Contains("CK_GRUPOUSUARIOS_SALDO"))
                {
                    b.Error = "Valor da cota maior do que a permitida pelo grupo";
                }

                res = BadRequest(b);
            }
            return(res);
        }