* query function added to list
* dashboard reading query, adding to object
* typecasting of filter vals needed still
* numbers accepting strings too
* json-to-graphql-query => devD
* fixed unneeded return in list index.ts
* stitching and calling but not actually calling
* calls on panel change
* query object += new panel before dashboard save
* uuid generated in app not api
* fixed panel ids in query
* fixed the tests I just wrote
* passing the query data down!
* list showing data
* objDiff test moved to test
* metric bug fixes + data
* dashboard logic
* time series conversion started
* timeseries GQL query almost there
* query querying
* chart loading
* aggregate handling improved
* error handling for aggregate+filter errors
* removed query on empty queryObj
* maybe more error handling
* more error handling working
* improvements to erorr handling
* stitchGQL() error return type corrected
* added string fields to COUNT
* pushing up but needs work
* not an endless recursion
* its not pretty but it works.
* throws an error
* system collections supported
* refactor to solve some errors
* loading correct
* metric function fixed
* data loading but not blocking rendering
* removed redundant code.
* relational fields
* deep nesting relations
* options.precision has a default
* relational fields fix. (thanks azri)
* the limit
* limit and time series
* range has a default
* datat to workspace
* v-if
* panels loading
* workspaces dont get data anymore
* package.json
* requested changes
* loading
* get groups util
* timeseries => script setup
* list => script setup
* metric => script setup
* label => script setup
* declare optional props
* loadingPanels: only loading spinner on loading panels
* remove unneeded parseDate!!
* applyDataToPanels tests
* -.only
* remove unneeded steps
* processQuery tests
* tests
* removed unused var
* jest.config and some queryCaller tests
* one more test
* query tests
* typo
* clean up
* fix some but not all bugs
* bugs from merge fixed
* Start cleaning up 🧹
* Refactor custom input type
* Small tweaks in list index
* Cleanup imports
* Require Query object to be returned from query prop
* Tweak return statement
* Fix imports
* Cleanup metric watch effect
* Tweaks tweaks tweaks
* Don't rely on options, simplify fetch logic
* Add paths to validation errors
* [WIP] Start handling things in the store
* Rework query fetching logic into store
* Clean up data passing
* Use composition setup for insights store
* Remove outdated
* Fix missing return
* Allow batch updating in REST API
Allows sending an array of partial items to the endpoints, updating all to their own values
* Add batch update to graphql
* Start integrating edits
* Readd clear
* Add deletion
* Add duplication
* Finish create flow
* Resolve cache refresh on panel config
* Prevent warnings about component name
* Improve loading state
* Finalize dashboard overhaul
* Add auto-refresh sidebar detail
* Add efficient panel reloading
* Set/remove errors on succeeded requests
* Move options rendering to shared
* Fix wrong imports, render options in app
* Selectively reload panels with changed variables
* Ensure newly added panels don't lose data
* Only refresh panel if data query changed
* Never use empty filter object in metric query
* Add default value support to variable panel
* Centralize no-data state
* Only reload data on var change when query is altered
* Fix build
* Fix time series order
* Remove unused utils
* Remove no-longer-used logic
* Mark batch update result as non-nullable in GraphQL schema
* Interim flows fix
* Skip parsing undefined keys
* Refresh insights dashboard when discarding changes
* Don't submit primary key when updating batch
* Handle null prop field better
* Tweak panel padding
Co-authored-by: jaycammarano <jay.cammarano@gmail.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
* Adds x-directus-cache response header with HIT value
* Added ENV var for cache header and MISS, UNCACHEABLE
* Rename CACHE_HEADER_KEY -> CACHE_STATUS_HEADER
Tad opinionated, but I feel like it describes the functionality slightly better
* Return miss consistently
Uncacheable doesn't quite describe what's happening. The user actively requests the cache to be skipped, which should result in an expected miss. The value isn't un-cacheable, the cache is skipped on purpose
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Use script setup
* Start on export dialog
* Use new system field interface, replace limit with numeric input
* Set placeholder
* Add sort config
* Use folder picker, correct layoutQuery use
* Add local download button
* Allow writing exports to file
* Add notification after export
* Fix sort config, use new export endpoint
* Setup notification hints
* Add information notice
* Fix local limit, cancel button
* Add (basic) docs for export functionality
* Fix json export file format
* Implement xml batch stitching
* Resolve review points
* Add "authenticate" filter hook that allows custom auth check
* Start on test
* Update Jest, restructure API tests, start implementing authenticate test
* Move access token verify to util function
* Ensure jest can show inline warnings on correct lines
* Update is-directus-jwt to use jsonwebtoken decode + add tests
* Remove unused package
* Tweak and finish + test authenticate
* Tweak test
* Add authenticate filter to docs
* Don't scan tests for codeql
* No seriously, ignore tests
* tsconfig loosened to match api
* integration test folder and script
* .env mock isn't needed
* mock-env, locations of tests
* I was wrong.
* Updated progress
* schemas => getSchema(), exported getColumnPreprocessor()
* change imports to allow build
* add MockClient as DB Client (should mock getDBClient())
* move authservice into. not used elsewhere
* test passing
* remove unneeded test for this PR
* removed unneded fields from rawItem
* formatting
* createOne test passing
* typo
* removed int specific jest.config
* use systemSchema over getSchema()
* this.knex over getDatabase()
* mock getDatabaseClient
* removed unused mock-env
* formatting
* removed unused collections from schema
* response => responseOnce
* more direct
* unused var
* more tests please!
* test for: createOne no permissions
* removed broken test for now
* clean up
* readOne tests what does into db and returned
* added bindings check
* added into db sql check
* moved tests outside src
* changed ts config
* cli test location changed
* removed looking for tests in src
* readding it for e2e tests? Seems fishy
* Integration tests for ItemsService user tables (#11208)
* renamed ItemsService test to match src file name
* add user table schema
* system/user tables use .each, formatting needed
* format system and user better in title
* tables/table=> schemas/schema
* filter _eq test passing
* comment for later and formatting
* everything in it's right place
* future proofing as more fields are added
* removed duplicate test
* formatting
* readMany() filter: _or
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
* added knex check before getDatabase()
* Move util test to tests folder
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* set statuscode to 204 if no content is send
this is currently wrong for the DELETE Http Method in directus, which sends 200 status code although no content is served
* make linter happy
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Moved over oauth impl to new interface
* Fixed most build issues and started addind schema to auth drivers
* Finished up OAuth2 and OpenID drivers
* Removed unused migration and utils
* Fixed minor todos
* Removed old oauth flow
* Changed oauth flow to re-use refresh token
* Added new oauth frontend
* Added font awesome social icons
* Updated authentication documentation
* Update api/src/auth/drivers/oauth2.ts
* Tested implementation and fixed incorrect validation
* Updated docs
* Improved OAuth error handling and re-enabled creating users with provider/identifier
* Removed Session config from docs
* Update app/src/components/v-icon/v-icon.vue
* Removed oauth need to define default roleID
* Added FormatTitle to SSO links
* Prevent local auth without password
* Store OAuth access token in session data
* Update docs/guides/api-config.md
* Fixed copy and removed fontawesome-vue dependency
* More docs fixes
* Crucialy importend type fiks
* Update package-lock
* Remove is-email-allowed check
In favor of more advanced version based on filtering coming later
* Fix JSON type casting
* Delete unused util
* Update type signature to include name
* Add warning when code isn't found in oauth url
and remove obsolete imports
* Auto-continue on successful SSO login
* Tweak type signature
* More type casting shenanigans
* Please the TS gods
* Check for missing token before crashing
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
This fixes not being able to build the repo due to type issues
introduced by the Typescript 4.4 option "useUnknownInCatchVariables",
which is enabled by default in strict mode.
* Move accountability type to shared
* Rely on shared for parse-filter
* Install date-fns
* Support dynamic variables in conditional fields
Closes#7157
* Rework cache handler to be function export
* Add default schema caching
* Add schema cache
* Auto purge schema cache on schema change from api
* Only set last_access value on login
* Add note on schema cache setting
* Rotate JPG image on upload #4206
* fixes#3949 width/height generated for gif and tif
* API hooks for event added for auth.login #4079
* updated doc for api hooks for new auth.login event
* Style tweaks
* Update docs
* Tweak docs some more
* Spelling error
* Allow non-required flags and pass to hook
* SDK - Persistent login refresh fixes#4113
* Fixed#4145 SDK, Token Expired error
* Spell check
* Docs Spell check
* Docs Spell check
* Docs Spell check
* update docs for sdk-js
* To delete all expired session from db on login
* corrected the condition for the delete
* changed the from Date.now to new date .
* Move it inline
* Added Knex option for Session store
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Declare return types on functions
And a very few other type related minor fixes
* Minor syntax fixes
* Remove unnecessary escape chars in regexes
* Remove unnecessary awaits
* Replace deprecated req.connection with req.socket
* Replace deprecated upload with uploadOne
* Remove unnecessary eslint-disable-next-line comments
* Comment empty functions / catch or finally clauses
* Fix irregular whitespaces
* Add missing returns (null)
* Remove unreachable code
* A few logical fixes
* Remove / Handle non-null assertions which are certainly unnecessary (e.g. in
tests)
* Check auth password policy on user modifications
* Show validation errors in drawer-batch
* Allow custom password policy, add placeholder
* Add UserSuspended exception
* Add user suspended error translation
* Move rate limiter creation into root helper
* Add login attempts support to authentication service
* Don't authenticate into settings service when checking password policy
* Start the xOne/xMany work
* Update update/upsert
* Finish updating itemsservice
* Add comments, add nested revisions on update
* Use new internal api
* Update collectionService to one/many structure
* Move files to one/many structure
* Move permissions to one/many structure
* Move relations service to one/many structure
* Move roles to one/many structure
* Move users service over
* Move webhooks to updated structure
* Move deprecated methods to the bottom
* Replace deprecated uses
* Use new methods in controllers, add batch update/delete by query
* Use updated methods in API
* Fix email being required
* Remove unnecessary DB call
* Fix batch update/delete validation
* Start on GraphQL "2.0", add methodnotallowed exceptoin
* Fix relative file pointer in peer dep
* [WIP] Add pre-filtered schema to SchemaOverview
* Use root schema as is, add reduce-schema util
* Use reduceSchema in the wild
* Base schema on local reduced schema
* Remove todo
* Use graphql-compose to build out schema
* Start restructuring resolvers
* Add create mutation
* Return boolean true for empty create mutation selections
* Add update mutation
* Add delete mutation
* Add system/items scoping
* Fix merge conflicts for real now
* Use system services, rename ids->keys
* Start on docs on mutations
* Updates to match main
* Add fetch-by-id
* Add one/many resolvers for mutations
* Check system collection rows for singleton
* Fix resolver extraction for single read
* Share delete return type
* Add comments
* Use collection root name for readable type
* Add specs endpoint for GraphQL SDL
* Update docs
* Add note on SDL spec
* Fix delete single example
* Remove package-lock
* Fix collection read scoping in non-read
* Start on database-error abstraction layer
* Add SQLite error abstraction
* Enable SQLite foreign key support
* Cleanup sqlite dialect slightly
Does it matter? Not really!
* Add MySQL error abstraction
* WIP Almost done with MSSQL
* Add correct error handling for MS SQL
* Fix mysql errors by not relying on value order
* Don't rely on sql in postgres exception translation
* Fix sqlite error parsing
* Remove foreign key constraint from activity to collections
A collection can be DB-only, but we still want to track activity for non-meta collections
* Translate error on update as well
* Pass relations through schema, instead of individual reads
* Fetch field transforms upfront
* Fix length check
* List if user has app access or not in accountability
* Load permissions up front, merge app access minimal permissions
* Show app access required permissions in permissions overview
* Show system minimal permissions in permissions detail
* Fix app access check in authenticate for jwt use
* Fix minimal permissions for presets
* Remove /permissions/me in favor of root use w/ permissions
* Fix logical nested OR in an AND
* Use root permissions endpoint with filter instead of /me
* Allow filter query on /permissions
* Add system minimal app access permissions into result of /permissions
* Remove stray console log
* Remove stray console.dir
* Set current role as role for minimal permissions
* Fix no-permissions state for user detail
* Add filter items function that allows altering existing result set