Esempio n. 1
0
        public Profissional Login(LoginDto login)
        {
            var user = _profissionalRepository.Get(new List <string> {
                "Acesso", "Unidades"
            }).FirstOrDefault(p => p.Email.ToLower() == login.Email.ToLower());

            if (user == null)
            {
                throw new ValidationException(ProfissionalResources.NaoCadastrado);
            }

            if (user.Acesso?.Senha == null || login.Senha != user.Acesso?.Senha)
            {
                throw new ValidationException(ProfissionalResources.SenhaInvalida);
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires            = DateTime.UtcNow.AddHours(12),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            user.Acesso.Token  = tokenHandler.WriteToken(token);
            user.Acesso.Ultimo = DateTime.Now;

            _profissionalAcessoRepository.Update(user.Acesso);

            user.Acesso.Senha = null;

            return(user);
        }