public async Task <User> Handle(Command request, CancellationToken cancellationToken) { if (await _context.Users.AnyAsync(x => x.Email == request.Email)) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email already exists." }); } if (await _context.Users.AnyAsync(x => x.UserName == request.Username)) { throw new RestException(HttpStatusCode.BadRequest, new { Username = "******" }); } var user = new ProfessorUser { Email = request.Email, UserName = request.Username }; var result = await _userManager.CreateAsync(user, request.Password); if (result.Succeeded) { return(new User { Token = _jwtGenerator.CreateToken(user), Username = user.UserName, }); } throw new Exception("Problem creating user."); }
public string CreateToken(ProfessorUser user) { var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.NameId, user.Id), new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName) }; var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(7), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(token)); }