* feat: implemented SizeReporter and FileSizeReporter
* test: FileSizeReporter tests
* feat: added QuotedDataAccessor
* test: added extra test to check recursiveness of filesizereporter
* feat: added QuotaStrategy interface
* feat: further progress in different files
* feat: wrote doc, tests and improved code
* feat: fixed bugs and code is now runnable and buildable
* feat: finished implementation
* fix: revert accidental chanegs
* fix: fileSizeReported did not count container size
* fix: bug calculating container sizes fixed
* test: FileSizeReporter tests
* test: QuotaDataValidator tests
* test: QuotaError tests
* fix: removed console.log
* doc: added doc to several files
* doc: changed doc for QuotaStrategy to new implementation
* fix: improved content length regex
* feat: improved GlobalQuotaStrategy code
* fix: made FileSizeReported readonly
* feat: added comments to quota-file.json
* fix: changed default tempFilePath variable
* test: included new tempFilePath variable in testing
* chore: created seperate command for start:file:quota to pass tests
* feat: removed all sync fs calls from FileSizeReporter
* feat: minor changes in multple files
* fix: changed function signatures to be in line with others
* feat: optimized quota data validation
* feat: improved FileSizeReporter code
* fix: corrected calculation of containersizes and fixed erroring edgecase
* feat: save content-length as number in metadata
* feat: added comments and changed GlobalQuotaStrategy constructor
* feat: changed file names and added small comment
* test: AtomicFileDataAccessor tests
* test: completed FileSizeReporter tests
* fix: content-length is now saved correctly in RepresentationMetadata
* feat: adapted content length metadata + tests
* fix: removed tempFilePath variable
* fix: reverted .gitignore
* fix: forgot to remove tempFilePath variable from componentsjs config
* test: GlobalQuotaStrategy tests
* feat: replaced DataValidator with Validator
* feat: reworked DataValidator
* feat: added calcultateChunkSize() to SizeReporter
* test: updated FileSizeReporter tests
* fix: tempFile location now relative to rootFilePath
* test: QuotaDataValidator tests
* fix: corrected FileSizeReporter tests
* fix: adapted FileSizeReporter tests
* fix: FileSizeReporter bug on Windows
* fix: regex linting error
* feat: changed Validator class
* feat: added PodQuotaStrategy to enable suota on a per pod basis
* chore: bump context versions
* fix: Capitalized comments in json file
* chore: renamed ValidatorArgs to ValidatorInput
* chore: order all exports
* fix: made TODO comment clearer
* chore: added seperated config files for global and pod based quota + fixed comments
* chore: made minor changes to comments
* feat: added PassthroughDataAccessor
* feat: added PasstroughtDataAccessor + tests
* fix: added invalid header check to ContentLengthParser
* chore: improved mocks
* chore: move quota limit higher up in config
* fix: atomicity issue in AtomicFileDataAccessor
* chore: moved .internal folder to config from FileSizeReporter
* fix: improved algorithm to ignore folders while calculating file size in FileSizeReporter
* fix: changes to support containers in the future
* fix: added error handling to prevent reading of unexistent files
* feat: added generic type to SizeReporter to calculate chunk sizes
* test: use mocked DataAccessor
* chore: added some comments to test and made minor improvement
* fix: fs mock rename
* chore: QuotaStrategy.estimateSize refactor
* chore: move trackAvailableSpace to abstract class QuotaStrategy
* fix: improved test case
* test: quota integration tests
* chore: edited some comments
* chore: change lstat to stat
* feat: moved estimateSize to SizeReporter to be consistent with calcultateChunkSize
* test: finish up tests to reach coverage
* fix: basic config
* fix: minor changes to test CI run
* fix: small fix for windows
* fix: improved writing to file
* chore: linting errors
* chore: rename trackAvailableSpace
* test: improved integration tests
* test: logging info for test debugging
* test: extra logging for debugging
* test: logging for debugging
* test: logging for debugging
* test: logging for debugging
* test: improved Quota integration test setup
* test: improve quota tests for CI run
* test: debugging Quota test
* test: uncommented global quota test
* test: changed global quota parameters
* test: logging for debugging
* test: logging cleanup
* chore: minor changes, mostly typo fixes
* chore: remove console.log
* fix: getting inconsistent results
* chore: try fix index.ts CI error
* chore: try fix CI error
* chore: try fix CI error
* chore: revert last commits
* chore: fix inconsistent files with origin
* test: minor test improvements
* chore: minor refactors and improvements
* fix: added extra try catch for breaking bug
* chore: improve config
* chore: minor code improvements
* test: use mockFs
* feat: add extra check in podQuotaStrategy
* chore: replace handle by handleSafe in ValidatingDataAccessor
* chore: typo
* test: improved Quota integration tests
* test: made comment in test more correct
* fix: rm -> rmdir for backwards compatibility
* fix: fsPromises issue
* chore: leave out irrelevant config
* chore: removed start script from package.json
* fix: Small fixes
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
Configuration has been updated so the IDP requests
also pass through an Authorization component.
A new config option was added to choose
which authorization scheme to use for the IDP.
This required AuxiliaryStrategy to have a new function
indicating if the auxiliary resource just used its associated resource authorization
or its own.
These readers will determine which permissions
are available for the incoming credentials.
Their results then get combined in a UnionReader
and authorized in a PermissionBasedAuthorizer
This adds options for enabling setup to the config folder.
All default configs with permanent storage (file/sparql)
are configured to require setup at server start.
Memory-based configs merely have it as an option.
* Add identity provider handler as a dependency
* Temp Identity
* Figured out how to get koa to work
* Hooked up idp to networking
* Feat/idp architecture refactor (#430)
* Logs in with solid oidc
* Refactored Provider
* Attempt to hook up dependencies
* Partial wiring of oidc provider components
* IdP networking now works with architecture
* Interaction Handlers Set Up
* fix: Rename & adapt to CSS
* Included Login Interaction
* Refactored architecture to bind Interaction Policy to HttpHandlers
Co-authored-by: Matthieu Bosquet <matthieubosquet@gmail.com>
* fix: Rebase on master
* fix: DI after rebase
* Reimplemented Routing
* Renamed modules and removed ProviderFactory (#450)
* refactor: Solid IdP DI
* refactor: IdP interaction handler DI
* refactor: IdP interaction waterfall
* refactor: Remove unnecessary legacy URL parse
* fix: Add legacy parse back in
* feat: adapter & fix: handlers
* Removed adapter factory
* fix: refactor IdP
* fix: refactor IdP
* fix: refactor IdP
* feat: Add IdP to file storage config
* fix: Unintended commit
* fix: Components ignore
* feat: Basic resource store adapter
* Partially complete idp routing
* Set up initial routing injection graph
* Clean up ResourceStorageAdapter
* Refactored configuration architecture
* Hooked up Login UIs (#518)
* feat: Use template path & run fileserver
* feat: Use util function to read resource
* Fixed DI JSON-LD context
* fixed rendering
* WebId validator
* Set up persistent storage for loing and register
* Fixed ejs template routing
* Refactored StorageAdapters
* NSS login successful
* Forgot password infrastructure
* Can send email (#557)
* Can send email
* fix: IdP crashes if interaction ID doesn't exist (#587)
* feat: Require an issuer registration token
* fix: Issuer registration token typo in error
* fix: Remove dummy IdP storage adapter
* fix: Remove unused library lodash
* fix: Remove unused library lru-cache
* Production ready keystore
* Ruben comments before clownface removal
* Removed clownface
* Change key value store
* Completed Ruben's comments
* Added comments to each class
* Fixed errors on login
* Ruben feedback
* Refactored out getPostRenderHandler
* Identity provider tests (#622)
* corrected tests lacking <void> on promises
* Added files for all idp tests
* Added unfinished tests for all added files
* ErrorHandlingWaterfallHandler
* RenderEjsHandler and RouterHandler tests
* GetPostRouterHandler and BasicOnErrorHandler tests
* Corrected tests for updates to Idp
* fix: missing export
* fix: audience claim
* Client Id Support (#630)
* Added client_id for the auth challenge
* Update src/identity/storage/ClientWebIdFetchingStorageAdapterFactory.ts
Co-authored-by: Matthieu Bosquet <matthieubosquet@gmail.com>
Co-authored-by: Matthieu Bosquet <matthieubosquet@gmail.com>
* fix: Rebase fixes
* Several minor Idp changes/refactors (#656)
* fix: Minor changes
* refactor: Split EmailPasswordInteractionPolicy
* refactor: Remove ErrorHandlingWaterfallHandler
* refactor: Clean up dependencies
* fix: Add dummy IdentityProviderHandler to fix integration tests
* Replace KeyValueStore with KeyValueStorage (#663)
* feat: Create WrappedExpiringStorage
* refactor: Update ResourceStoreEmailPasswordStore to use KeyValueStorage
* refactor: Update KeyGeneratingIdpConfigurationGenerator to use KeyValueStorage
* refactor: Update ResourceStoreStorageAdapterFactory to use ExpiringStorage
* refactor: Removed KeyValueStore
* refactor: Simplify EmailPassword handlers (#664)
* refactor: Order index.ts
* test: Add EmailPasswordForgotPasswordHandler unit tests
* test: Add EmailPasswordGetResetPasswordHandler unit tests
* test: Add EmailPasswordLoginHandler unit tests
* test: Add EmailPasswordRegistrationHandler unit tests
* test: Add EmailPasswordResetPasswordHandler unit tests
* test: Remove unnecessary test file
* feat: Basic instructions for using the IdP
* fix: IdP instructions and add example WebID
* fix: IdP registration copy
* fix: IdP instruction editorial
* Update README.md
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
* Update README.md
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
* test: Add KeyGeneratingIdpConfigurationGenerator unit tests
* test: Add KeyValueEmailPasswordStore unit tests
* test: Create IdP integration test
* test: Add EmailPasswordInteractionPolicy unit tests
* test: Add BasicIssuerReferenceWebIdOwnershipValidator unit tests
* test: Add ChooseInitialInteractionHandler unit tests
Also fixes the config warning.
* test: Add EjsTemplateRenderer unit tests
* test: Add EmailSender unit tests
* test: Add FormDataUtil unit tests
* test: Add IdpRouteController unit tests
* test: Add OidcInteractionCompleter unit tests
* refactor: Simplify ClientWebIdFetchingStorageAdapterFactory
* test: Add ClientWebIdFetchingStorageAdapterFactory unit tests
* refactor: Fix ejs html warnings
* test: Add step to test logging in again
Included are updates to handle cookies more correctly.
* feat: Add IdpConfirmHttpHandler
This way there's a handler for the confirm page.
* test: Add ExpiringStorageAdapterFactory unit tests
* test: Add IdentityProviderFactory unit tests
* test: Add IdentityProviderHttpHandler unit tests
* refactor: Minor refactors
* refactor: Use jose instead of node-jose
* refactor: Use jose instead of node-jose
Reduces the number of dependencies since other libraries
also depend on jose.
* Update src/identity/configuration/KeyGeneratingIdpConfigurationGenerator.ts
Co-authored-by: Matthieu Bosquet <matthieubosquet@gmail.com>
* refactor: Use interfaces instead of abstract classes
* refactor: Make WebIdOwnershipValidator an AsyncHandler
* refactor: Make TemplateRenderer an AsyncHandler
* fix: Fix typing issue
* fix: Convert JWK to plain object for node 15
* feat: Update CI configuration
--ignore-scripts was removed because it also stopped dependency scripts,
which was a requirement for bcrypt.
15.0 was removed since that version doesn't run the required scripts after install.
14.0 was removed since the somehow it caused the solid-authn client to do the wrong calls.
* test: Run integration tests on Node 14.2
This is the lowest 14.x version where the IdP integration tests succeed.
* feat: Use ErrorResponseWriter for handling oidc errors
* test: Mock Date in OidcInteractionCompleter tests
* fix: Correctly generate new identifiers
Previously there could be double slashes if the base URL ended in slash.
* fix: Correctly handle storagePathName in ExpiringStorageAdapterFactory
* fix: Fix issue with new CliRunner test in rebase
* fix: Handle unknown errors more consistently
* feat: Make idp parameter dynamic
* feat: Add more logging
* refactor: Link css instead of injecting
* fix: Fix redis integration tests with idp
* refactor: Shorten idp class names
* refactor: Remove e-mail configuration from default config
* feat: Store JsonResourceStorage data in a single container
* feat: Make sure expired data gets removed at some point
* feat: Only accept strings as keys in KeyValueStorage
* fix: Various minor fixes based on review
Co-authored-by: Matthieu Bosquet <matthieubosquet@gmail.com>
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
* bug: correctly handle slug in POST request
* bug: disallow slashes in slug + modified tests
* fix: fixed tests to work with PUT instead of POST+slug
* fix: fixed tests failing in ci
* fix: adapted to reviews
* fix: adapted to review
* feat: Add logging
* refactor: Configure the logger for the tests once globally
* feat: Add logging
* fix: Fix ESLint errors due to merge conflicts
* Review log and error messages.
* refactor: Cleanup a bit
* refactor: Change to logger info calls
Co-authored-by: Ruben Verborgh <ruben@verborgh.org>
The root container wasn't being created for file based tests.
Containers should be POSTed as RDF bodies.
Containment triples of child containers had no trailing slash.