Commit Graph

298 Commits

Author SHA1 Message Date
rijkvanzanten
1395e7d10c Use correct value in driver validation 2022-03-24 16:25:09 -04:00
ian
e2eb2801c5 Prefix existing field typecasting flags with "cast-" (#12141)
* Prefix typecasting field flags

* Fix payload test

* Update flags for system tables and for field creation in app

* Revert cast-hash and cast-uuid

* Rename migrations file to current date
2022-03-21 14:46:48 -04:00
ian
5068ca096b Add lock for system cache (#12017)
* Add lock for system cache

* Add lock when forcing a flush

* Simplify code

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-03-18 15:54:02 -04:00
Rijk van Zanten
1c3e94d830 Add new export experience (#12201)
* 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
2022-03-17 15:43:45 -04:00
Lukas Kimpel
2312a0e20d Add check for filterPath length when not having m2o/a2o relation in order to add nested filters (#11768)
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-03-05 00:40:11 +00:00
Rijk van Zanten
eea9f45624 Add authenticate hook to implement custom auth checks against current request (#11942)
* 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
2022-03-03 16:29:13 -05:00
Azri Kahar
dec85f5659 add style to links in notice (#11925)
* add style to links in notice

* fix for stylelint

* unrelated: fix eslint warning for unused variables
2022-03-03 09:56:38 -05:00
Rijk van Zanten
962af79dbc Replace union query approach with updated table scan (#11246)
* Start by stripping out the previous Union attempt

* Then set limit to -1, causing massive memory issues on big data sets

* Now fix the memory problem by batching the responses

* Use env var for max relational batch size

* Rename env var, add to docs
2022-03-01 18:20:00 -05:00
ian
bc45dd5f05 Empty {} supersedes other permissions/validations in _OR merge (#11554)
* Empty {} supersedes other permissions/validations in _OR merge

* Add unit test

* Fix typo

* Add a different conditional filter for comparison
2022-02-28 12:03:24 -05:00
Rijk van Zanten
79ce3c8765 Add parsePreset helper function (#11423) 2022-02-04 00:29:28 +00:00
Nicola Krumschmidt
35ee3f4151 Add a few missing DefinitelyTyped dependencies (#11381) 2022-02-02 03:47:28 +01:00
Jay Cammarano
ef9b30c0e1 Integration tests set up and examples (#10419)
* 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>
2022-01-24 19:55:08 +00:00
Silvio
e88cebd8e6 fix for filtering nested M2M relations (#11159) 2022-01-24 14:01:20 -05:00
John Huffsmith
e7ada1f173 Moving schema and relation types into shared package (#11179)
* moving schema and relation types into shared package

* updating SchemaOverview imports

* removing duplicate import
2022-01-20 13:36:19 -05:00
Azri Kahar
66b8e1f3d3 fix file local type for displaysForType (#10821) 2022-01-03 11:32:24 -05:00
Rijk van Zanten
7833160348 Add ability to configure IP extraction (#10765)
* Add ability to configure IP extraction

* Add comment on ipv4 v ipv6

* Uninstall unused is-ip package
2021-12-30 11:34:49 -05:00
Rijk van Zanten
a5f64efb22 Fix data type inconsistencies in directus_shares table (#10740)
* Fix date resolution in share info endpoint

* Add note on leaving fields blank

* Tweak example to use proper db client

* Treat mysql 0000-00-00 00:00:00 as null

* Fix migration for mysql 5

* Add missing defaults to system fields
2021-12-28 18:32:27 -05:00
Rijk van Zanten
dbf35a1736 Add ability to share items with people outside the platform (#10663)
* Add directus_shares

* Don't check for usage limit on refresh

* Add all endpoints to the shares controller

* Move route `/auth/shared` to `/shared/auth`

* Add password protection

* Add `share` action in permissions

* Add `shares/:pk/info`

* Start on shared-view

* Add basic styling for full shared view

* Fixed migrations

* Add inline style for shared view

* Allow title override

* Finish /info endpoint for shares

* Add basic UUID validation to share/info endpont

* Add UUID validation to other routes

* Add not found state

* Cleanup /extract/finish share login endpoint

* Cleanup auth

* Added `share_start` and `share_end`

* Add share sidebar details.

* Allow share permissions configuration

* Hide the `new_share` button for unauthorized users

* Fix uses_left displayed value

* Show expired / upcoming shares

* Improved expired/upcoming styling

* Fixed share login query

* Fix check-ip and get-permissions middlewares behaviour when role is null

* Simplify cache key

* Fix typescript linting issues

* Handle app auth flow for shared page

* Fixed /users/me response

* Show when user is authenticated

* Try showing item drawer in shared page

* Improved shared card styling

* Add shares permissions and change share card styling

* Pull in schema/permissions on share

* Create getPermissionForShare file

* Change getPermissionsForShare signature

* Render form + item on share after auth

* Finalize public front end

* Handle fake o2m field in applyQuery

* [WIP]

* New translations en-US.yaml (Bulgarian) (#10585)

* smaller label height (#10587)

* Update to the latest Material Icons (#10573)

The icons are based on https://fonts.google.com/icons

* New translations en-US.yaml (Arabic) (#10593)

* New translations en-US.yaml (Arabic) (#10594)

* New translations en-US.yaml (Portuguese, Brazilian) (#10604)

* New translations en-US.yaml (French) (#10605)

* New translations en-US.yaml (Italian) (#10613)

* fix M2A list not updating (#10617)

* Fix filters

* Add admin filter on m2o role selection

* Add admin filter on m2o role selection

* Add o2m permissions traversing

* Finish relational tree permissions generation

* Handle implicit a2o relation

* Update implicit relation regex

* Fix regex

* Fix implicitRelation unnesting for new regex

* Fix implicitRelation length check

* Rename m2a to a2o internally

* Add auto-gen permissions for a2o

* [WIP] Improve share UX

* Add ctx menu options

* Add share dialog

* Add email notifications

* Tweak endpoint

* Tweak file interface disabled state

* Add nicer invalid state to password input

* Dont return info for expired/upcoming shares

* Tweak disabled state for relational interfaces

* Fix share button for non admin roles

* Show/hide edit/delete based on permissions to shares

* Fix imports of mutationtype

* Resolve (my own) suggestions

* Fix migration for ms sql

* Resolve last suggestion

Co-authored-by: Oreilles <oreilles.github@nitoref.io>
Co-authored-by: Oreilles <33065839+oreilles@users.noreply.github.com>
Co-authored-by: Ben Haynes <ben@rngr.org>
Co-authored-by: Thien Nguyen <72242664+tatthien@users.noreply.github.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2021-12-23 18:51:59 -05:00
rijkvanzanten
42476c45c8 Add logging to cli snapshot apply 2021-12-15 10:08:47 -05:00
rijkvanzanten
9b54e9fe8f Cleanup codestyle 2021-12-10 14:20:37 -05:00
ian
709bab178b Separate caching of dynamic user vars from permissions (#9957)
* Separate caching of dynamic user vars from permissions

* Cache filterContext only when permissions are cached

* Reset merge

* Reapply changes

* Reduce nesting

* Add missing assignment

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-12-10 14:17:47 -05:00
Oreille
1b9eb0f4b1 Use expression instead of alias in groupBy query (#10339) 2021-12-06 12:55:33 -05:00
Rijk van Zanten
5d80038a8a Fix permissions merging on null check (#10336)
Fixes #10305
2021-12-06 15:12:20 +00:00
Rijk van Zanten
a77f08b3d3 Add table prefix to groupBy query (#10250)
Fixes #10092
2021-12-03 00:28:25 +00:00
Rijk van Zanten
198e585054 Fix handling of nested arrays in snapshot diffing (#10246)
* Fix handling of nested arrays in snapshot diffing

Fixes #10167

* Remove unused import
2021-12-02 17:53:17 -05:00
José Varela
7966b4ea9d Fix empty current permissions (#10236) 2021-12-02 19:49:11 +00:00
Oreille
bc864d1f51 Improve helpers structure (#10052)
* Improve helpers structure

* Added DatabaseHelper base class

* Refactor index.ts
2021-12-01 15:08:24 -05:00
Oreille
d1b35774ac Fix SQL Server text casting (#10084) 2021-12-01 14:16:02 -05:00
Oreille
94985d547a Fix MySQL tinyint(1) not being treated as boolean (#10083) 2021-12-01 14:01:48 -05:00
Oreille
0425809db1 Fix string filter unexpectedly being casted to number (#10138)
* Fix string unexpectedly being casted to numbers

* Parse filter with multiple keys into `_and` block.

* Fixed filter structure in tests
2021-12-01 13:55:54 -05:00
Azri Kahar
8dec148ca2 refresh edited insights panel on change (#10180)
* refresh edited insights panel on change

* move api simpleHash to shared utils getSimpleHash

* Simply reactivity fix for time-series

* Remove unused import

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-12-01 17:26:55 +00:00
Azri Kahar
19906d0501 Fix deep groupBy (#9996)
* fix deep _groupBy not turning to _group

* add groupBy to roles user count

* Revert "add groupBy to roles user count"

This reverts commit 16340eef5a.
2021-11-24 17:14:29 -05:00
Jay Cammarano
25375cc481 Add notifications system and support user mentions in comments (#9861)
* v-menu de/activated onKeyDown. No List yet.

* v-list

* add user suggestion

* uuids replaced

* user-popover working

* avatars flex row with usernames in suggestions

* added space to end of uuid insert

* autofocus + move caret to end of last insert

* removed unnecessary setTimeout()

* fixed filter 500 with ids

* better fix

* New translations en-US.yaml (French) (#9907)

* New translations en-US.yaml (French) (#9912)

* New translations en-US.yaml (French) (#9916)

* New translations en-US.yaml (Russian) (#9918)

* New translations en-US.yaml (Swedish) (#9920)

* Email updates (#9921)

* add from name for emails

* updatd email template style

* reset password email copy

* updated logo to newest version

* update invite email copy

* decouple field template logic

* push up styling

* Start on new v-template-input

* Add notifications API endpoints

Squashed commit of the following:

commit 9d86721ef795d03bc55693c0f99bde8e269d60e9
Merge: b4458c19f 34131d06e
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Mon Nov 22 09:27:43 2021 -0500

    Merge branch 'mentions' into mentions-api

commit b4458c19f7c54f18fa415fc04c63642c2f5a17b0
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 18:34:04 2021 -0500

    Remove unused import

commit e6a9d36bbfdf95cb18d29336da61ecb14b677934
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 18:28:31 2021 -0500

    Extract user mentions from comments

commit b3e571a2daa287e1740a050096913662a57e9861
Merge: c93b833d2 af2a6dd7f
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 17:39:52 2021 -0500

    Merge branch 'mentions' into mentions-api

commit c93b833d2b848e306c434b370d4e4e11967e85d0
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 17:35:45 2021 -0500

    Send emails w/ parsed MD

commit 64bbd6596f20a07028d2387d60e33dfe4f91c032
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 16:18:16 2021 -0500

    Add notifications endpoint + permissions

commit fba55c02dc9c303a38b1b958350684cccd3dd82c
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Thu Nov 18 15:33:28 2021 -0500

    Add system data for notifications

* push

* Make v-template-input work

* Add the two-way binding

* submit button posting, not clearing text area

* comment text area clearing on submit

* Replace insertion correctly

* Added scope support to LDAP group and user search (#9529)

* Added scope support LDAP group and user search

* Fixed linter screwing up my markdown

* Update docs/configuration/config-options.md

* Always return correct DN for user with sub scope

* Fix indeterminate meta and schema property in advanded field creation (#9924)

* Fix impossibility to save M2M (alterations not triggered) (#9992)

* Fix alterations refactor

* fix roles aggregate query (#9994)

* Update iis.md (#9998)

added the IIS URL Rewrite module as a requirement

* New translations en-US.yaml (English, United Kingdom) (#10001)

* Fix LDAP race condition (#9993)

* Fix input ui

* Revert changes to v-field-template

* Update mentions permissions

* Fix linter warnings

* Optimize sending flow

* Revert "Rename activity->notifications module (#9446)"

This reverts commit 428e5d4ea9.

* Add notifications drawer

* Update migrations

* Improve constraints

* Add email notifications toggle on users

* Add docs, fix graphql support

* Move caret-pos to devdeps

* Remove unused new triggerKeyPressed system

* Remove unused use-caret composable

Co-authored-by: Nitwel <nitwel@arcor.de>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Ben Haynes <ben@rngr.org>
Co-authored-by: Aiden Foxx <aiden.foxx@sbab.se>
Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Paul Boudewijn <paul@helderinternet.nl>
2021-11-24 16:11:26 -05:00
Oreille
2f0e305796 Refactor parseFilter to only flatten filter entries that need it (#9804)
* Refactor parseFilter to only flatten filter entries that need it

* Fixed typescript check

* Use custom get function instead of lodash's.

* Improved get function readability

* Allow null result from shared parseFilter

* Add missing defaultValue in get function

* Change parseFilter argument type from Record<string, any> to Filter | null

Co-authored-by: ian <licitdev@gmail.com>
2021-11-23 12:35:12 -05:00
Alexander
ad54b96184 Fix unexpected types (#9599)
* fix/9576

* fix: mysql tinyint booleans

* fix: failed tests

* fix: linter error

* Add unsigned types for mysql

Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
2021-11-22 14:20:52 -05:00
d1rOn
f10d01d7f1 [API] m2a filtering fix (#9666)
* [API] m2a filtering fix

MySQL does not support CAST to VARCHAR type.

* Use CHAR(255) instead of CHAR

Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
2021-11-11 15:39:05 -05:00
Rijk van Zanten
3cd1224795 Fix nested union query filter (#9726)
Fixes #9578
2021-11-11 13:22:11 -05:00
Nitwel
c962144cef Fix relation not having collection and field values (#9652) 2021-11-09 09:55:45 -05:00
Oreille
5f43b20ebf Update geometric types and patch new field flow. (#9397)
* Update geometric types and patch new field flow.

* Add migration

* Fixed migrations

* Also fixed migrations

* Update migration ID

* Cleanup type selector a bit

* Add missing fallback interface/display for new types

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-11-04 21:47:54 -04:00
Oreille
ef3da32ab3 Properly handle M2A fields in fieldStore and useFieldTree (#9432)
* Properly handle M2A fields in fieldStore and useFieldTree

* Fix addNode

* Rewrote use-field-tree

* Remember visited paths

* Fix error whith undefined relation.meta
2021-11-04 20:35:05 -04:00
Rijk van Zanten
b2f3091826 Prevent negative hashes from being generated (#9501)
Fixes #9499
2021-11-04 20:21:39 -04:00
Rijk van Zanten
dbe29554e7 Move union query application to applyQuery, fix where clause (#9494)
* Move union query application to applyQuery, fix where clause

Fixes #9228

* Handle case where union IDs length = 0

* Return modified db query

* Apply union last
2021-11-04 22:55:10 +00:00
Farid Saud
493a35da90 Use hash instead of random for default index name (#9448)
* [Fix]: Use hash instead of random for default index name

* Move hash function to separate util file

* Reduce max size of index name to 60 from 64

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-11-04 21:37:03 +00:00
Rijk van Zanten
65291b95c4 Allow dynamic user variables to be used with filter rules (cont.) (#9376)
* Move permissions extraction to accountability

* Fix permissions retrieval for public user

* Fetch user / role context in permissions middleware

* Remove unnecessary parseFilter

* Rename schemaCache to systemCache

* Add permissions caching

* Add system cache invalidation on permission changes

* Improve caching perf by reducing scope

* Add note to docs

* Clarify compatibility with conditional fields/filters

* Fix lint warning

* Allow nested vars in system-filter-input

* Add custom getter function that resolves arrays

* Add is-dynamic-variable util

* Export new util

* Cleanup parse filter

* Fix build

* Move debounce up to use-items

* Remove unused prop

* 🧹

* Fix input pattern usage w/ vars

* Remove debounce from search-input, increase throttle
2021-11-03 16:56:16 -04:00
Nitwel
6ea29d8673 Fix date on sqlite (#7774)
* fix date on sqlite

* remove unused imports

* rename KnexSpatial to KnexDate

Co-authored-by: Jose Varela <joselcvarela@gmail.com>
2021-11-02 14:51:17 +00:00
Nitwel
894b4975f2 Fix issues with fields config (#9324)
* Fix issues with fields config

* Fix /fields endpoint return type for alias fields

* Fix display selection in relational interfaces
2021-11-01 20:55:45 +00:00
Theraloss
91aaad61cf prefix aggregation field with table name (#9314)
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-11-01 14:20:26 -04:00
Oreille
8df071a3a2 Fix generated columns being required. (#9200)
* Fix generated columns being required. Also prevent schema changes on generated columns.

* Fix type errors

* Disable `unique` and `nullable` instead of not showing them.

* Fix other type error

* Nullable check small refactor

* Fixed MSSQL query

* Fixed oracle query
2021-10-29 12:24:21 -04:00
Oreille
c94d0c4bfe Use default filter operator for type in filter input. (#9103)
* Use default filter operator for type in filter input. Also fix error on geometry operator update.

* Fixed tests.

* Only reset geometry filter value when necessary

* Support `null` for boolean operators.
2021-10-25 11:28:44 -04:00
Oreille
d06abbd797 Always cast M2A related primary keys to text. (#9122) 2021-10-25 09:53:44 -04:00