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);
        }
Ejemplo n.º 2
0
            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));
            }
Ejemplo n.º 3
0
        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);
        }