private async Task <RespuestaAutenticacion> ConstruirToken(CredencialesUsuario credencialesUsuario,
                                                                   string usuarioId)
        {
            var claims = new List <Claim>()
            {
                new Claim("email", credencialesUsuario.Email),
                new Claim("id", usuarioId)
            };

            var usuario = await userManager.FindByEmailAsync(credencialesUsuario.Email);

            var claimsDB = await userManager.GetClaimsAsync(usuario);

            claims.AddRange(claimsDB);

            var llave = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["llavejwt"]));
            var creds = new SigningCredentials(llave, SecurityAlgorithms.HmacSha256);

            var expiracion = DateTime.UtcNow.AddYears(1);

            var securityToken = new JwtSecurityToken(issuer: null, audience: null, claims: claims,
                                                     expires: expiracion, signingCredentials: creds);

            return(new RespuestaAutenticacion()
            {
                Token = new JwtSecurityTokenHandler().WriteToken(securityToken),
                Expiracion = expiracion
            });
        }
        public async Task <ActionResult <RespuestaAutenticacion> > Renovar()
        {
            var emailClaim          = HttpContext.User.Claims.Where(claim => claim.Type == "email").FirstOrDefault();
            var email               = emailClaim.Value;
            var credencialesUsuario = new CredencialesUsuario()
            {
                Email = email
            };

            return(await ConstruirToken(credencialesUsuario));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <RespuestaAutenticacion> > Login([FromBody] CredencialesUsuario credenciales)
        {
            var resultado = await signInManager.PasswordSignInAsync(credenciales.Email, credenciales.Password, isPersistent : false, lockoutOnFailure : false);

            if (resultado.Succeeded)
            {
                return(await ConstruirToken(credenciales));
            }
            else
            {
                return(BadRequest("Login incorrecto"));
            }
        }
Ejemplo n.º 4
0
        public async Task <ActionResult <RespuestaAutenticacion> > Crear([FromBody] CredencialesUsuario credenciales)
        {
            var usuario = new IdentityUser {
                UserName = credenciales.Email, Email = credenciales.Email
            };
            var resultado = await userManager.CreateAsync(usuario, credenciales.Password);

            if (resultado.Succeeded)
            {
                return(await ConstruirToken(credenciales));
            }
            else
            {
                return(BadRequest(resultado.Errors));
            }
        }
        [HttpPost("registrar")] // api/cuentas/registrar
        public async Task <ActionResult <RespuestaAutenticacion> > Registrar(CredencialesUsuario credencialesUsuario)
        {
            var usuario = new Usuario {
                UserName = credencialesUsuario.Email,
                Email    = credencialesUsuario.Email
            };
            var resultado = await userManager.CreateAsync(usuario, credencialesUsuario.Password);

            if (resultado.Succeeded)
            {
                await servicioLlaves.CrearLlave(usuario.Id, Entidades.TipoLlave.Gratuita);

                return(await ConstruirToken(credencialesUsuario, usuario.Id));
            }
            else
            {
                return(BadRequest(resultado.Errors));
            }
        }