Example #1
0
        public async Task <AuthenticationResult> Register(string email, string password, string name)
        {
            var existedUser = await _userManager.FindUserByEmail(email);

            if (existedUser != null)
            {
                return(new AuthenticationResult
                {
                    ErrorMessages = new[] { "Email already exists " }
                });
            }

            var newUser = new User()
            {
                Name  = name,
                Email = email
            };

            await _userManager.Create(newUser);


            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_jwtSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(JwtRegisteredClaimNames.Sub, newUser.Email),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim(JwtRegisteredClaimNames.Email, newUser.Email),
                    new Claim("id", newUser.Id)
                }),
                Expires            = DateTime.Now.AddHours(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key),
                                                            SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(new AuthenticationResult
            {
                Success = true,
                Token = tokenHandler.WriteToken(token)
            });
        }