public LibraryConnectionResult Connect(string tenantWebUrl, Library library, string userId, string accessToken = "")
        {
            accessToken = GetAccessToken(accessToken);
            var userEmail = GetCurrentUserEmail();

            //check with provisioning service that they are authoriesed to connect
            var libraryId = library.LibraryId;

            var libraryIdWithReadPermission = _provisioningService.GetWebWhereUserHasPermissions(
                library.HostWebUrl, accessToken, SPBasePermissions.ViewListItems);

            if (libraryIdWithReadPermission == null || libraryIdWithReadPermission.Id == null || new Guid(libraryIdWithReadPermission.Id) != libraryId)
            {
                return(null);
            }

            // update db connected User if they have connection
            var user = _loginSettingsService.GetUserById(new Guid(userId));

            if (user != null)
            {
                user.DefaultLibraryId = library.LibraryId;
                _loginSettingsService.Save();

                var accessInfo = new SharePointAccessInfo(library.HostWebUrl)
                {
                    AccessToken = accessToken,
                    UserEmail   = userEmail
                };
                accessInfo.Update();

                var libraryConnectionResult = new LibraryConnectionResult
                {
                    Library    = library,
                    AccessInfo = accessInfo
                };

                return(libraryConnectionResult);
            }
            return(null);
        }