public string CreateToken(ReactivityUser user) { var claims = new List <Claim>() { new Claim(JwtRegisteredClaimNames.NameId, user.UserName) }; var signingCredentials = CreateSigningCredentials(); var tokenDescriptor = CreateTokenDescriptor(claims, signingCredentials); var token = GenerateToken(tokenDescriptor); return(token); }
public async Task <UserViewModel> Handle(FacebookLoginQuery request, CancellationToken cancellationToken) { var userInfo = await this.fbAccessor.FacebookLoginAsync(request.AccessToken); if (userInfo == null) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } var user = await this.userManager.FindByEmailAsync(userInfo.Email); if (user == null) { user = new ReactivityUser { DisplayName = userInfo.Name, Id = userInfo.Id, Email = userInfo.Email, UserName = $"fb_{userInfo.Id}", RefreshToken = jwtGenerator.GenerateRefreshToken(), RefreshTokenExpiryDate = DateTime.Now.AddDays(ReactivitiesAppConstants.RefreshTokenExpiryInDays) }; var photo = new Photo { Id = $"fb_{userInfo.Id}", Url = userInfo?.Picture?.Data?.Url, IsMain = true }; user.Photos.Add(photo); var result = await this.userManager.CreateAsync(user); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } } return(new UserViewModel { DisplayName = user.DisplayName, Token = this.jwtGenerator.CreateToken(user), Username = user.UserName, Image = user.Photos.FirstOrDefault(x => x.IsMain)?.Url, RefreshToken = user.RefreshToken }); }