예제 #1
0
        // GET: Usuario
        public ActionResult Index()
        {
            var usuario     = _usuarioService.RetornLoggedUser((ClaimsIdentity)User.Identity);
            var orgsUsuario = _usuarioOrganizacaoService.GetByIdUsuario(usuario.UsuarioModel.Id).Select((o) => o.OrganizacaoId).ToList();
            var usuarios    = _usuarioService.GetAllByIdsOrganizacao(orgsUsuario).GroupBy(u => u.Id).ToList();
            List <UsuarioAuxModel> lista = new List <UsuarioAuxModel>();

            usuarios.ForEach(s => lista.Add(new UsuarioAuxModel {
                UsuarioModel = s.FirstOrDefault(), TipoUsuarioModel = _tipoUsuarioService.GetById(s.FirstOrDefault().TipoUsuarioId), OrganizacaoModels = _organizacaoService.GetByIdUsuario(s.FirstOrDefault().Id)
            }));

            return(View(lista));
        }
        public ActionResult Get(int id)
        {
            try
            {
                var tipo = _service.GetById(id);
                if (tipo == null)
                {
                    return(NotFound("Tipo de Usuário não encontrado na base de dados."));
                }

                return(Ok(tipo));
            }
            catch (ServiceException e)
            {
                return(StatusCode(500, e.Message));
            }
        }
        public async Task <IActionResult> Authenticate(LoginViewModel loginViewModel)
        {
            if (ModelState.IsValid)
            {
                if (ValidaCpf(loginViewModel.Login))
                {
                    // Obtendo o usuario baseado nas informações passadas.
                    var user = _usuarioService.GetByLoginAndPass(Methods.CleanString(loginViewModel.Login), Criptography.GeneratePasswordHash(loginViewModel.Senha));
                    if (user != null)
                    {
                        var claims = new List <Claim>
                        {
                            new Claim(ClaimTypes.SerialNumber, user.Id.ToString()),
                            new Claim(ClaimTypes.UserData, user.Cpf),
                            new Claim(ClaimTypes.NameIdentifier, user.Nome),
                            new Claim(ClaimTypes.DateOfBirth, user.DataNascimento.ToString()),
                            new Claim(ClaimTypes.Role, _tipoUsuarioService.GetById(user.TipoUsuarioId).Descricao)
                        };

                        // Adicionando uma identidade as claims.
                        var identity = new ClaimsIdentity(claims, "login");

                        // Propriedades da autenticação.
                        var claimProperty = new AuthenticationProperties
                        {
                            ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1) // Expira em 1 dia
                        };

                        // Logando efetivamente.
                        await HttpContext.SignInAsync(new ClaimsPrincipal(identity), claimProperty);

                        // Redirecionando, com usuario logado.
                        return(RedirectToAction("Index", "Home"));
                    }
                }
            }

            // usuario invalido.
            return(RedirectToAction("Index", "Login", new { msg = "error" }));
        }