private async Task CreateNewUserAndStudentForFbUser(FacebookUserInfoResult userInfo) { //new student await _studentsController.Create(new Student() { FirstName = userInfo.FirstName, LastName = userInfo.LastName, //ImageUpload = DownloadImage(userInfo.Picture.Data.Url).Result, Email = userInfo.Email, PhoneNumber = "000-000-000" }); //new .net user var newUser = new AppUser { UserName = userInfo.FirstName.ToLower() + "-" + userInfo.LastName.ToLower(), Email = userInfo.Email, RegistrationDate = DateTime.Now, IsStudent = true, PhoneNumber = "000-000-000" }; var createResult = await _userManager.CreateAsync(newUser); if (!createResult.Succeeded) { TempData["Error"] = "Error: User was't registered. Please try again."; } await _signInManager.SignInAsync(newUser, false); }
public async Task <TokenResponse> Handle(Commands request, CancellationToken cancellationToken) { var user = new AppUser(); var googleUser = new GoogleUserInfo(); var facebookUser = new FacebookUserInfoResult(); if (request.Provider.Equals("google")) { googleUser = await _externalLogin.GetGoogleInfoasync(request.AccessToken); if (googleUser == null) { throw new RestException(HttpStatusCode.BadRequest, new { msg = "Invalid Token" }); } user = _mapper.Map <AppUser>(googleUser); } else if (request.Provider.Equals("facebook")) { facebookUser = await _externalLogin.GetFacebookInfoasync(request.AccessToken); if (facebookUser == null) { throw new RestException(HttpStatusCode.BadRequest, new { msg = "Invalid Token" }); } user = _mapper.Map <AppUser>(facebookUser); } else { throw new RestException(HttpStatusCode.BadRequest, new { msg = "Invalid Provider" }); } var newUser = await _userManager.FindByIdAsync(user.Id); if (newUser == null) { var result = await _userManager.CreateAsync(user); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, "user"); var newDto = _mapper.Map <UserDto>(user); newDto.ImgUrl = user.ImgUrl; return(new TokenResponse(_jwtGenerator.CreateToken(user), newDto)); } } var userDto = _mapper.Map <UserDto>(user); userDto.ImgUrl = user.ImgUrl; return(new TokenResponse(_jwtGenerator.CreateToken(user), userDto)); }
public async Task LoginWithFacebookAsync_ShouldSignIn_WhenUserExists() { var accessToken = "EAABw3KiLV1QBACrZCNuvHBaijiPEURQzAhVqZCG"; var facebookTokenValidationResult = new FacebookTokenValidationResult { FacebookTokenValidationData = new FacebookTokenValidationData { IsValid = true } }; var facebookInfoResult = new FacebookUserInfoResult { Id = Guid.NewGuid().ToString(), FirstName = "test", LastName = "user", Email = "*****@*****.**", }; _facebookAuthService.ValidateAccessTokenAsync(accessToken).Returns(facebookTokenValidationResult); _facebookAuthService.GetUserInfoAsync(accessToken).Returns(facebookInfoResult); var user = new User(facebookInfoResult.Email, facebookInfoResult.Email); _userRepository.GetByEmailAsync(facebookInfoResult.Email).Returns(user); var jwtDto = _fixture.Create <JwtDto>(); _jwtHandler.CreateToken(Arg.Any <int>(), Arg.Any <string>(), Arg.Any <string>()).Returns(jwtDto); var refreshToken = _fixture.Create <RefreshToken>(); var jwt = await _sut.LoginWithFacebookAsync(accessToken); jwt.ShouldNotBeNull(); jwt.ShouldBeOfType(typeof(JwtDto)); jwt.UserId.ShouldBe(jwtDto.UserId); jwt.Username.ShouldBe(jwtDto.Username); jwt.Role.ShouldBe(jwtDto.Role); jwt.AccessToken.ShouldBe(jwtDto.AccessToken); jwt.Expires.ShouldBe(jwtDto.Expires); jwt.RefreshToken.ShouldBe(jwtDto.RefreshToken); }