Exemplo n.º 1
0
        private async Task <User> RegisterUserFromExternalProvider(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            var user = _mapper.Map <ExternalUserDto, User>(externalData.ExternalUser);

            user.RegisteredWith = loginProvider;
            var result = await _userManager.CreateAsync(user);

            return(result.Succeeded ? user : null);
        }
        private async Task <IActionResult> HandleExternalInfo(IPAddress userIp, ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            _logger.LogInformation($"User with ip: {userIp} started facebook logging flow");
            if (externalData == null)
            {
                _logger.LogInformation(
                    $"User with ip: {userIp} tried to login with external login provider. Unable to validate external token");
                return(BadRequest());
            }
            var result = await _authService.ExternalLogin(externalData, loginProvider);

            if (result == null)
            {
                _logger.LogInformation(
                    $"User with ip: {userIp} tried to login with external login provider. Unable to register user");
                return(BadRequest());
            }
            return(Ok(result.Token));
        }
Exemplo n.º 3
0
        public async Task <TokenResponseDto> ExternalLogin(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            var user = await GetUserWithBoards(externalData.ExternalUser.Email);

            if (user == null)
            {
                user = await RegisterUserFromExternalProvider(externalData, loginProvider);
            }
            if (user == null)
            {
                return(null);
            }
            if (!user.EmailConfirmed)
            {
                user.EmailConfirmed = true;
                await _userManager.UpdateAsync(user);
            }
            var token         = GetJwtSecurityToken(user, loginProvider, externalData.AccessToken);
            var tokenResponse = CreateTokenResponse(token, user);

            return(tokenResponse);
        }