public async Task <ActionResult <UserDto> > Register(RegisterDto registerDto) { if (await _userManager.Users.AnyAsync(x => x.UserName == registerDto.FSId)) { return(BadRequest("already have account")); } var user = new FSUser { UserName = registerDto.FSId, FirstName = registerDto.FirstName, LastName = registerDto.LastName }; user.UserName = registerDto.FSId.ToLower(); var result = await _userManager.CreateAsync(user, registerDto.FSId.ToLower()); if (!result.Succeeded) { return(BadRequest(result.Errors)); } return(new UserDto { FSId = user.UserName, Token = await _tokenService.CreateToken(user), }); }
public async Task <string> CreateToken(FSUser user) { var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.NameId, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName), }; var roles = await _userManager.GetRolesAsync(user); claims.AddRange(roles.Select(role => new Claim(ClaimTypes.Role, role))); var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(token)); }