Exemplo n.º 1
0
        public async Task <ActionResult <UserToken> > CreateUser([FromBody] UserInfoToken model)
        {
            try {
                var user = new ApplicationUserToken {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    return(_tokenService.BuildToken(model));
                }
                else
                {
                    return(BadRequest("Usuário ou senha inválidos"));
                }
            }
            catch (Exception e)
            {
                return(NotFound(new
                {
                    message = e.Message,
                    errorCode = (int)HttpStatusCode.NotFound
                }));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult <UserToken> > Obter([FromBody] UserInfoToken userInfo)
        {
            try{
                var result = await _signInManager.PasswordSignInAsync(userInfo.Email, userInfo.Password,
                                                                      isPersistent : false, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    return(_tokenService.BuildToken(userInfo));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "login inválido.");
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception e)
            {
                return(NotFound(new
                {
                    message = e.Message,
                    errorCode = (int)HttpStatusCode.NotFound
                }));
            }
        }
Exemplo n.º 3
0
        public UserToken BuildToken(UserInfoToken userInfo)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            };
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:key"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            // tempo de expiração do token: 1 hora
            var expiration         = DateTime.UtcNow.AddHours(1);
            JwtSecurityToken token = new JwtSecurityToken(
                issuer: null,
                audience: null,
                claims: claims,
                expires: expiration,
                signingCredentials: creds);

            return(new UserToken()
            {
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Expiration = expiration
            });
        }