Exemple #1
0
        public async Task <IActionResult> Register([FromBody] RegisterModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = new StorefrontUser
            {
                UserName = model.Username,
                Email    = model.Username
            };
            var result = await this._userManager.CreateAsync(user, model.Password);

            if (!result.Errors.Any())
            {
                return(await Authenticate(new LoginModel { Username = model.Username, Password = model.Password }));
            }

            foreach (var error in result.Errors)
            {
                this._logger.LogError($"Error updating user. {error.Code} : {error.Description}");
            }

            return(BadRequest());
        }
Exemple #2
0
        private object GenerateJwtToken(string username, StorefrontUser user)
        {
            List <Claim> claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, username),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                // This line makes UserName available off of the Identity object.
                new Claim(ClaimTypes.Name, username)
            };

            var key     = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this._key));
            var creds   = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires = DateTime.Now.AddDays(Convert.ToDouble(30));

            var token = new JwtSecurityToken(this._issuer, this._audience,
                                             claims,
                                             expires: expires,
                                             signingCredentials: creds
                                             );

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }