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)); }
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")); } }
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)); } }