public ActionResult Registrar(RegistroUsuarioViewModel model)
        {
            if (ModelState.IsValid)
            {
                var usuario = new Usuario
                {
                    Nome   = model.Nome,
                    Email  = model.Email,
                    Senha  = model.Senha,
                    Ativo  = true,
                    Perfil = new Perfil {
                        Id = (int)TipoPerfil.Usuario
                    }                                                    // Por padrão todos que se registram são usuarios.
                };

                using (UsuarioRepository repo = new UsuarioRepository())
                {
                    usuario = repo.Inserir(usuario);
                }

                if (usuario.Id > 0)
                {
                    //TODO: logar o usuario
                    return(RedirectToAction("Index", "Home"));
                }
            }

            // Se chegou aqui, temos um problema. Devolvo o model para o form novamente.
            return(View(model));
        }
Beispiel #2
0
        public async Task <IActionResult> RegistroUsuario(RegistroUsuarioViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Error"));
            }

            var user = new UsuarioConversor()
            {
                UserName = model.Email, Email = model.Email, FechaNacimiento = model.FechaNacimiento, Pais = model.IdPais
            };
            var result = await userManager.CreateAsync(
                user, model.Password);

            if (result.Succeeded)
            {
                return(View("RegistrationConfirmation"));
            }

            foreach (var error in result.Errors)
            {
                ModelState.AddModelError("error", error.Description);
            }
            return(View(model));
        }
 public RegistroUsuarioPage(Usuario u)
 {
     try
     {
         InitializeComponent();
         dataWCF        = DependencyService.Get <IDataStore>();
         BindingContext = _vm = new RegistroUsuarioViewModel(this);
         _vm.User       = u;
         _vm.Setup();
         //imagenCir.Aspect = Aspect.AspectFit
         if (String.IsNullOrEmpty(u.Nick))
         {// al Inicio
             CompFormSL.IsVisible = false;
             msjLB.IsVisible      = true;
             inicio = true;
         }
         else
         { //Ya registrado
             CompFormRE.IsVisible = false;
             msjLB.IsVisible      = false;
             msjLB.HeightRequest  = 0;
             guardarBt.Text       = "Guardar";
             Ciudad2.SelectedItem = u.Ciudad;
             inicio = false;
             guardarBt2.IsVisible     = false;
             guardarBt2.HeightRequest = 0;
         }
     }
     catch (Exception ex)
     {
     }
 }
Beispiel #4
0
        public async Task <ActionResult> Registrar(RegistroUsuarioViewModel registerUser)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var user = new IdentityUser
            {
                UserName       = registerUser.Nome,
                Email          = registerUser.Email,
                EmailConfirmed = true
            };

            var result = await _userManager.CreateAsync(user, registerUser.Senha);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, false);

                return(CustomResponse(await GerarJwt(user.Email)));
            }

            foreach (var error in result.Errors)
            {
                NotificarErro(error.Description);
            }

            return(CustomResponse(registerUser));
        }
        public ActionResult Registro(int?id)
        {
            RegistroUsuarioViewModel model = new RegistroUsuarioViewModel();

            if (id.HasValue)
            {
                Usuario usuario = _dbContext.Usuario.FirstOrDefault(x => x.ID_USUARIO == id);

                model.usuarioID    = usuario.ID_USUARIO;
                model.usuarioNome  = usuario.NOME_COMPLETO;
                model.usuarioLogin = usuario.LOGIN;
                model.usuarioCPF   = usuario.CPF;
                model.usuarioEmail = usuario.EMAIL;
                model.usuarioRG    = usuario.RG;
                model.usuarioRG_UF = usuario.RG_UF;
                model.GrupoId      = usuario.ID_GRUPO;

                if (usuario.CPF == "")
                {
                    model.TipoUsuario = true;
                }
            }

            return(View(model));
        }
Beispiel #6
0
        public IActionResult RegistroUsuario()
        {
            var listaPaises = _repositorio.ObtenerPaises();
            var registroUsuarioViewModel = new RegistroUsuarioViewModel {
                ListaPaises = listaPaises
            };

            return(View(registroUsuarioViewModel));
        }
        public async Task <IActionResult> Registrar([Bind("nombre,apellido,fechanacimiento,edad,correo,contraseña,rol,tipoVia,numeroVia,numeroViaSecundario,numeroCasa,tipoInmueble,numeroInmueble,ciudad,departamento,pais")] RegistroUsuarioViewModel usuarioCompuesto)
        {
            if (ModelState.IsValid)
            {
                Usuario user = new Usuario();
                user.nombre     = usuarioCompuesto.nombre;
                user.apellido   = usuarioCompuesto.apellido;
                user.correo     = usuarioCompuesto.correo;
                user.contraseña = usuarioCompuesto.contraseña;
                //Hay que calcular la edad
                user.edad            = usuarioCompuesto.edad;
                user.fechanacimiento = usuarioCompuesto.fechanacimiento;
                user.rol             = 1;


                user.tipoVia             = usuarioCompuesto.tipoVia;
                user.numeroVia           = usuarioCompuesto.numeroVia;
                user.numeroViaSecundario = usuarioCompuesto.numeroViaSecundario;
                user.numeroCasa          = usuarioCompuesto.numeroCasa;
                user.tipoInmueble        = usuarioCompuesto.tipoInmueble;
                user.numeroInmueble      = usuarioCompuesto.numeroInmueble;

                CiudadDepPais ciudad = new CiudadDepPais();
                ciudad.ciudad = usuarioCompuesto.ciudad;

                Departamento dep = new Departamento();
                dep.departamento = usuarioCompuesto.departamento;

                Pais pais = new Pais();
                pais.pais = usuarioCompuesto.pais;


                _context.Pais.Add(pais);
                await _context.SaveChangesAsync();

                dep.idPais = pais.idPais;


                _context.Departamentos.Add(dep);
                await _context.SaveChangesAsync();

                ciudad.idDepartamento = dep.idDepartamento;

                _context.CiudadDepPais.Add(ciudad);
                await _context.SaveChangesAsync();

                user.idCiudadDepPais = ciudad.idCiudadDepPais;

                _context.Usuario.Add(user);
                await _context.SaveChangesAsync();


                return(RedirectToAction("InicioDeSesion", "Usuario"));
            }
            return(RedirectToAction("Registro", "Usuario"));
        }
        public ActionResult Registrar()
        {
            RegistroUsuarioViewModel model = new RegistroUsuarioViewModel();

            using (var repo = new PerfilRepository())
            {
                var lista = repo.Listar();
                model.ListaPerfil = (from x in lista
                                     select new SelectListItem
                {
                    Text = x.Nome,
                    Value = x.Id.ToString()
                });
            }

            return(View(model));
        }
        public IHttpActionResult ResetarSenha(RegistroUsuarioViewModel model)
        {
            if (model == null)
            {
                ModelState.AddModelError("", "Error");
                return(BadRequest(ModelState));
            }

            if (model.Senha != "")
            {
                //Criando o SALT
                RandomNumberGenerator rng = RandomNumberGenerator.Create();
                byte[] number             = new byte[32];
                rng.GetBytes(number);
                string pass_salt = Convert.ToBase64String(number);

                //Criando o hash da primeira senha (CPF) do novo usuário
                crypt = SHA256Managed.Create();

                string senha = model.NovaSenha;
                string pass  = senha;

                byte[] passbytes = Encoding.UTF8.GetBytes(pass_salt + pass);
                byte[] hash      = crypt.ComputeHash(passbytes);
                int    id        = Convert.ToInt16(_authenticationManager.User.Identity.Name);

                if (id > 0)
                {
                    Usuario user = _dbContext.Usuario.FirstOrDefault(c => c.ID_USUARIO == id);

                    user.SENHA = Convert.ToBase64String(hash);
                    user.SALT  = pass_salt;

                    UsuarioLog ulog = new UsuarioLog();
                    ulog.ID_USUARIO    = id;
                    ulog.DATA_LOG      = DateTime.Now;
                    ulog.DESCRICAO_LOG = string.Format("O usuário '{0}' alterou a sua senha.", user.NOME_COMPLETO);
                    _dbContext.UsuarioLog.Add(ulog);

                    _dbContext.SaveChanges();
                    return(Ok());
                }
            }

            return(Ok("Senha Alterada com Sucesso"));
        }
        public ActionResult RegistroOLD(int?id)
        {
            RegistroUsuarioViewModel model = new RegistroUsuarioViewModel();

            if (id.HasValue)
            {
                Usuario usuario = _dbContext.Usuario.FirstOrDefault(x => x.ID_USUARIO == id);

                model.usuarioID    = usuario.ID_USUARIO;
                model.usuarioNome  = usuario.NOME_COMPLETO;
                model.usuarioLogin = usuario.LOGIN;
                model.usuarioCPF   = usuario.CPF;
                model.usuarioEmail = usuario.EMAIL;
                model.usuarioRG    = usuario.RG;
                model.usuarioRG_UF = usuario.RG_UF;

                model.GrupoId = usuario.ID_GRUPO;
                model.OrgaoId = usuario.ID_ORGAO;

                if (model.OrgaoId > 0)
                {
                    int orgaoid = Convert.ToInt16(model.OrgaoId);

                    Orgao orgao = _dbContext.Orgao.FirstOrDefault(c => c.ID_ORGAO == orgaoid);

                    SubtipoOrgao subtipoOrgao = _dbContext.SubtipoOrgao.FirstOrDefault(c => c.ID_SUBTIPO_ORGAO == orgao.ID_SUBTIPO_ORGAO);

                    model.OrgaoIdSubTipo = subtipoOrgao.ID_SUBTIPO_ORGAO;

                    TipoOrgao tipoOrgao = _dbContext.TipoOrgao.FirstOrDefault(c => c.ID_TIPO_ORGAO == subtipoOrgao.ID_TIPO_ORGAO);

                    model.OrgaoIdTipo = tipoOrgao.ID_TIPO_ORGAO;
                }

                if (usuario.CPF == "")
                {
                    model.TipoUsuario = true;
                }
            }

            return(View(model));
        }
Beispiel #11
0
        public ActionResult Registrarse(RegistroUsuarioViewModel model, bool captchaValid)
        {
            if (!ModelState.IsValid)
            {
                if (!captchaValid)
                {
                    ModelState.AddModelError("", "Favor validar que no eres un robot.");
                }
                return(View(model));
            }

            try
            {
                var perfil = perfilseg.GetPerfilbyId(1);

                var ValidPassword = CheckPassword(model.Password, perfil.LenMinPass, perfil.CantLetrasMin, perfil.CantLetrasMayMin, perfil.CantNumeroMin, perfil.CantCharEspecialMin);

                if (!ValidPassword.IsValid)
                {
                    foreach (var item in ValidPassword.Mensajes)
                    {
                        ModelState.AddModelError("", item);
                    }
                    return(View(model));
                }

                var respuesta = userlogic.RegistrarUsuario(new Entidades.Usuarios {
                    Email = model.Email, Password = util.encriptar(model.Password)
                });
                if (respuesta.response)
                {
                    return(RedirectToAction("Login"));
                }
                ModelState.AddModelError("", respuesta.mensaje);
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }
            return(View(model));
        }
Beispiel #12
0
        public async Task <IActionResult> Signup(RegistroUsuarioViewModel NewUser)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var Usuario = _mapper.Map <Usuario>(NewUser);
                    _context.Usuario.Add(Usuario);
                    await _context.SaveChangesAsync();

                    GestionEmail cuenta = new GestionEmail();
                    cuenta.sendEmailAccount(Usuario.Correo, Usuario.Usuario1, Usuario.IdUsuario);
                    return(RedirectToAction("VerificacionEmail", new { NameUsuario = Usuario.Usuario1, Numero = 3, Correo = Usuario.Correo }));
                }
                return(View(NewUser));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Error"));
            }
        }
Beispiel #13
0
        public ActionResult Criar(RegistroUsuarioViewModel model)
        {
            var usuario = new Usuario
            {
                Nome   = model.Nome,
                Email  = model.Email,
                Senha  = model.Senha,
                Ativo  = true,
                Perfil = new Perfil {
                    Id = model.IdPerfil
                }
            };

            using (UsuarioRepository repo = new UsuarioRepository())
            {
                usuario = repo.Inserir(usuario);

                if (usuario.Id == 0)
                {
                    ModelState.AddModelError("", "Erro");
                }
            }
            return(RedirectToAction("Index"));
        }
        public IHttpActionResult CriarUsuario(RegistroUsuarioViewModel modelo)
        {
            ModelState.Remove("modelo.Senha");
            ModelState.Remove("modelo.NovaSenha");
            ModelState.Remove("modelo.ConfirmaNovaSenha");

            //Validando o registro
            if (modelo == null)
            {
                ModelState.AddModelError("", "Error");
                return(BadRequest(ModelState));
            }

            //Verifica o tipo de registro do Usuário (não está sendo mais usado)
            if (!modelo.TipoUsuario)
            {
                ModelState.Remove("modelo.usuarioRG");
                ModelState.Remove("modelo.usuarioCPF");
                ModelState.Remove("modelo.usuarioEmail");
            }

            //Verificando se o modelo é válido
            if (!ModelState.IsValid)
            {
                return(BadRequest("Preencha os campos obrigatorios marcados com  *  "));
            }

            //Verifica Login
            int qtd = _dbContext.Usuario.Count(x => x.LOGIN == modelo.usuarioLogin);

            if (qtd > 0 && modelo.usuarioID == 0)
            {
                return(BadRequest("Login já cadastrado"));
            }

            //Verifica CPF
            int cpf = _dbContext.Usuario.Count(x => x.CPF == modelo.usuarioCPF);

            if (cpf > 0 && modelo.usuarioID == 0)
            {
                return(BadRequest("CPF já cadastrado"));
            }

            // Recupera o ID do usuário que está cadastrando ou alterando um usuário
            int     idAdmin = Convert.ToInt32(_authenticationManager.User.Identity.Name);
            Usuario admin   = _dbContext.Usuario.FirstOrDefault(x => x.ID_USUARIO == idAdmin && x.FLAG_ATIVO);

            //Novo usuário
            if (modelo.usuarioID == 0)
            {
                //Criando o SALT
                RandomNumberGenerator rng = RandomNumberGenerator.Create();
                byte[] number             = new byte[32];
                rng.GetBytes(number);
                string pass_salt = Convert.ToBase64String(number);

                //Criando o hash da primeira senha (CPF) do novo usuário
                crypt = SHA256Managed.Create();

                string senha = "depa123";
                if (!String.IsNullOrWhiteSpace(modelo.usuarioCPF))
                {
                    senha = modelo.usuarioCPF;
                }

                string pass      = senha;
                byte[] passbytes = Encoding.UTF8.GetBytes(pass_salt + pass);
                byte[] hash      = crypt.ComputeHash(passbytes);

                Usuario novo = new Usuario()
                {
                    ID_USUARIO      = modelo.usuarioID,
                    LOGIN           = modelo.usuarioLogin,
                    NOME_COMPLETO   = modelo.usuarioNome,
                    EMAIL           = modelo.usuarioEmail,
                    CPF             = modelo.usuarioCPF,
                    RG              = modelo.usuarioRG,
                    RG_UF           = modelo.usuarioRG_UF,
                    ID_GRUPO        = modelo.GrupoId,
                    DATA_ALTERADO   = DateTime.Now,
                    DATA_CADASTRO   = DateTime.Now,
                    FLAG_ATIVO      = true,
                    PRIMEIRO_ACESSO = true,
                    SALT            = pass_salt,
                    SENHA           = Convert.ToBase64String(hash),
                };
                _dbContext.Usuario.Add(novo);

                UsuarioLog ulog = new UsuarioLog();
                ulog.ID_USUARIO    = idAdmin;
                ulog.DATA_LOG      = DateTime.Now;
                ulog.DESCRICAO_LOG = string.Format("O administrador '{0}' realizou o cadastro de um novo usuário.", admin.NOME_COMPLETO);
                _dbContext.UsuarioLog.Add(ulog);

                _dbContext.SaveChanges();

                // Verifica se o retorno do usuário salvo está OK
                if (novo.ID_USUARIO > 0)
                {
                    // Verifica se existem unidades selecionadas para o usuário
                    if (modelo.Orgaos != null && modelo.Orgaos.Count > 0)
                    {
                        UsuarioOrgaos orgao;

                        // Grava as informações na tabela de relacionamento
                        foreach (int id in modelo.Orgaos)
                        {
                            orgao            = new UsuarioOrgaos();
                            orgao.ID_USUARIO = novo.ID_USUARIO;
                            orgao.ID_ORGAO   = id;
                            orgao.FLAG_ATIVO = true;

                            _dbContext.UsuarioOrgaos.Add(orgao);
                        }

                        //Salva as informações
                        _dbContext.SaveChanges();
                    }
                }

                return(Ok("Usuário cadastrado com sucesso!"));
            }

            //Editando usuário
            if (modelo.usuarioID > 0)
            {
                //Recuperando o usuário
                Usuario user = _dbContext.Usuario.FirstOrDefault(c => c.ID_USUARIO == modelo.usuarioID);
                user.NOME_COMPLETO = modelo.usuarioNome;
                user.EMAIL         = modelo.usuarioEmail;
                user.CPF           = modelo.usuarioCPF;
                user.RG            = modelo.usuarioRG;
                user.RG_UF         = modelo.usuarioRG_UF;
                user.ID_GRUPO      = modelo.GrupoId;
                user.DATA_ALTERADO = DateTime.Now;

                //Verificando a lista de orgãos para alteração
                List <UsuarioOrgaos> orgaos = _dbContext.UsuarioOrgaos.Where(o => o.ID_USUARIO == modelo.usuarioID).ToList();

                //Desativando os orgãos cadastrados no banco que não foram selecionados e estão ativos
                foreach (UsuarioOrgaos uo in orgaos.Where(x => !modelo.Orgaos.Any(o => o == x.ID_ORGAO) && x.FLAG_ATIVO))
                {
                    uo.FLAG_ATIVO = false;
                }

                //Ativando os orgãos que existem no banco e estão inativos
                foreach (UsuarioOrgaos uo in orgaos.Where(x => modelo.Orgaos.Any(o => o == x.ID_ORGAO) && !x.FLAG_ATIVO))
                {
                    uo.FLAG_ATIVO = true;
                }

                //Registra os novos orgãos marcados que não estão no banco
                UsuarioOrgaos novo;
                foreach (int id in modelo.Orgaos.Where(x => !orgaos.Any(o => o.ID_ORGAO == x)).ToList())
                {
                    novo            = new UsuarioOrgaos();
                    novo.ID_USUARIO = modelo.usuarioID;
                    novo.ID_ORGAO   = id;
                    novo.FLAG_ATIVO = true;
                    _dbContext.UsuarioOrgaos.Add(novo);
                }

                //Gerando registro de log
                UsuarioLog ulog = new UsuarioLog();
                ulog.ID_USUARIO          = idAdmin;
                ulog.ID_USUARIO_ALTERADO = modelo.usuarioID;
                ulog.DATA_LOG            = DateTime.Now;
                ulog.DESCRICAO_LOG       = string.Format("O administrador '{0}' alterou o cadastro do usuário '{1}'.", admin.NOME_COMPLETO, user.NOME_COMPLETO);
                _dbContext.UsuarioLog.Add(ulog);

                //Salvando as informações em banco
                _dbContext.SaveChanges();

                return(Ok("Usuário alterado com sucesso!"));
            }

            return(BadRequest(ModelState));
        }
        public IHttpActionResult CreateUsuario(RegistroUsuarioViewModel model)
        {
            // Recupera o ID do usuário que está cadastrando ou alterando um usuário
            int     idAdmin = Convert.ToInt32(_authenticationManager.User.Identity.Name);
            Usuario admin   = _dbContext.Usuario.FirstOrDefault(x => x.ID_USUARIO == idAdmin && x.FLAG_ATIVO);

            //Criando o SALT
            RandomNumberGenerator rng = RandomNumberGenerator.Create();

            byte[] number = new byte[32];
            rng.GetBytes(number);
            string pass_salt = Convert.ToBase64String(number);

            //Criando o hash da primeira senha (CPF) do novo usuário
            crypt = SHA256Managed.Create();

            string senha = "depa123";

            if (!String.IsNullOrWhiteSpace(model.usuarioCPF))
            {
                senha = model.usuarioCPF;
            }

            string pass = senha;

            byte[] passbytes = Encoding.UTF8.GetBytes(pass_salt + pass);
            byte[] hash      = crypt.ComputeHash(passbytes);

            //Passando as informações de senha e salt para o usuário
            // novo.SENHA = Convert.ToBase64String(hash);
            //novo.SALT = pass_salt;

            if (model == null)
            {
                ModelState.AddModelError("", "Error");
                return(BadRequest(ModelState));
            }

            if (!model.TipoUsuario)
            {
                ModelState.Remove("model.usuarioRG");
                ModelState.Remove("model.usuarioCPF");
                ModelState.Remove("model.usuarioEmail");
                ModelState.Remove("model.Senha");
                ModelState.Remove("model.NovaSenha");
                ModelState.Remove("model.ConfirmaNovaSenha");
            }
            else
            {
                ModelState.Remove("model.Senha");
                ModelState.Remove("model.NovaSenha");
                ModelState.Remove("model.ConfirmaNovaSenha");
            }

            if (!ModelState.IsValid)
            {
                // return BadRequest(ModelState);


                return(BadRequest("Preencha os campos obrigatorios marcados com  *  "));
            }

            int qtd = _dbContext.Usuario.Count(x => x.LOGIN == model.usuarioLogin);

            int cpf = _dbContext.Usuario.Count(x => x.CPF == model.usuarioCPF);

            if (cpf > 0 && model.usuarioID == 0)
            {
                return(BadRequest("CPF já cadastrado"));
            }


            if (qtd == 0 && model.usuarioID == 0)
            {
                _dbContext.Usuario.Add(new Usuario()
                {
                    ID_USUARIO      = model.usuarioID,
                    LOGIN           = model.usuarioLogin,
                    NOME_COMPLETO   = model.usuarioNome,
                    EMAIL           = model.usuarioEmail,
                    CPF             = model.usuarioCPF,
                    RG              = model.usuarioRG,
                    RG_UF           = model.usuarioRG_UF,
                    ID_GRUPO        = model.GrupoId,
                    ID_ORGAO        = model.OrgaoId,
                    DATA_ALTERADO   = DateTime.Now,
                    DATA_CADASTRO   = DateTime.Now,
                    FLAG_ATIVO      = true,
                    PRIMEIRO_ACESSO = true,
                    SALT            = pass_salt,
                    SENHA           = Convert.ToBase64String(hash),
                });

                UsuarioLog ulog = new UsuarioLog();
                ulog.ID_USUARIO    = idAdmin;
                ulog.DATA_LOG      = DateTime.Now;
                ulog.DESCRICAO_LOG = string.Format("O administrador '{0}' realizou o cadastro de um novo usuário.", admin.NOME_COMPLETO);
                _dbContext.UsuarioLog.Add(ulog);

                _dbContext.SaveChanges();

                return(Ok("Usuário cadastrado com sucesso!"));
            }
            else if (model.usuarioID == 0)
            {
                return(BadRequest("Login já cadastrado"));
            }

            if (model.usuarioID > 0)
            {
                Usuario user = _dbContext.Usuario.FirstOrDefault(c => c.ID_USUARIO == model.usuarioID);

                user.NOME_COMPLETO = model.usuarioNome;
                user.EMAIL         = model.usuarioEmail;
                user.CPF           = model.usuarioCPF;
                user.RG            = model.usuarioRG;
                user.RG_UF         = model.usuarioRG_UF;
                user.ID_GRUPO      = model.GrupoId;
                user.ID_ORGAO      = model.OrgaoId;
                user.DATA_ALTERADO = DateTime.Now;

                UsuarioLog ulog = new UsuarioLog();
                ulog.ID_USUARIO    = idAdmin;
                ulog.DATA_LOG      = DateTime.Now;
                ulog.DESCRICAO_LOG = string.Format("O administrador '{0}' alterou o cadastro do usuário '{1}'.", admin.NOME_COMPLETO, user.NOME_COMPLETO);
                _dbContext.UsuarioLog.Add(ulog);

                _dbContext.SaveChanges();

                return(Ok("Usuário alterado com sucesso!"));
            }

            return(BadRequest(ModelState));
        }
        public IHttpActionResult Logar(RegistroUsuarioViewModel model)
        {
            //Criando o hash da primeira senha (CPF) do novo usuário
            crypt = SHA256Managed.Create();

            Usuario user = _dbContext.Usuario.FirstOrDefault(c => c.LOGIN == model.usuarioLogin && c.FLAG_ATIVO);

            if (user != null)
            {
                string pass = model.Senha;

                byte[] passbytes = Encoding.UTF8.GetBytes(user.SALT + pass);
                byte[] hash      = crypt.ComputeHash(passbytes);

                if (Convert.ToBase64String(hash) == user.SENHA)
                {
                    UsuarioLog ulog = new UsuarioLog();
                    ulog.ID_USUARIO    = user.ID_USUARIO;
                    ulog.DATA_LOG      = DateTime.Now;
                    ulog.DESCRICAO_LOG = string.Format("O atendente '{0}' realizou o login no sistema de atendimento do DEPA.", user.NOME_COMPLETO);
                    _dbContext.UsuarioLog.Add(ulog);
                    _dbContext.SaveChanges();

                    UsuarioModel userModel = new UsuarioModel()
                    {
                        ID_USUARIO = user.ID_USUARIO,
                        ID_GRUPO   = user.ID_GRUPO,
                        ID_ORGAO   = user.ID_ORGAO.HasValue ? user.ID_ORGAO.Value : (int?)null,
                        LOGIN      = user.LOGIN,
                        NOME       = user.NOME_COMPLETO,
                        EMAIL      = user.EMAIL,
                        GRUPO      = user.Grupo.DESCRICAO_GRUPO,
                        ORGAO      = user.ID_ORGAO.HasValue ? _dbContext.Orgao.FirstOrDefault(o => o.ID_ORGAO == user.ID_ORGAO.Value).NOME_ORGAO : string.Empty,
                        FLAG_CIVIL = new List <int>()
                        {
                            1, 2, 4, 6
                        }.Any(i => i == user.ID_GRUPO),
                        FLAG_MILITAR = new List <int>()
                        {
                            3, 5, 7
                        }.Any(i => i == user.ID_GRUPO),
                        FLAG_ACESSO = user.PRIMEIRO_ACESSO
                    };

                    var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationType);

                    identity.AddClaim(new Claim(ClaimTypes.Name, user.ID_USUARIO.ToString()));
                    identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.LOGIN));
                    identity.AddClaim(new Claim(ClaimTypes.Role, user.Grupo.DESCRICAO_GRUPO));

                    if (user.ID_ORGAO.HasValue)
                    {
                        identity.AddClaim(new Claim("Orgao", user.ID_ORGAO.Value.ToString()));
                    }
                    _authenticationManager.SignOut(CookieAuthenticationDefaults.AuthenticationType);
                    _authenticationManager.SignIn(identity);

                    return(Ok(userModel));
                }
                else
                {
                    return(BadRequest("Usuário ou senha incorretos"));
                }
            }
            else
            {
                return(BadRequest("Usuário ou senha incorretos"));
            }
        }