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));
        }