Commit Graph

79 Commits

Author SHA1 Message Date
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
Rijk van Zanten
6da3f1ed50 Add support for import ip deny list (#12025)
* Add support for import ip deny list

* Fix typo
2022-03-07 18:09:08 -05:00
Rijk van Zanten
826404bcbe Default CORS to disabled (#12022)
* Default CORS to disabled

* Update docs to match
2022-03-07 21:05:02 +00: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
Michael Lopez
c561826572 Support listen parameter (#11465)
* Support listen option for allowing server to listen on wanted IP address or host

* Change default listen value from localhost to 0.0.0.0

* Update LISTEN variable to HOST

* fix formatting

* Update docs/configuration/config-options.md

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-02-28 21:09:27 +00:00
Nicola Krumschmidt
42f26dc55f Add extension auto reloading to the API (#10881)
* Add extension auto reloading to the API

This can be enabled by using the `EXTENSIONS_AUTO_RELOAD` env var.

* Add logger message indicating watch mode

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-01-06 20:02:43 +00: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
Paul Boudewijn
02950ea32e exclude MS-SQL system table 'sysdiagrams' (#10713) 2021-12-27 18:50:05 +00:00
Dorian Zedler
94e53212b4 Implement AUTH_DISABLE_DEFAULT config option (#9322)
* Implement AUTH_DISABLE_DEFAULT config option

* Disable default auth rute if set to disabled

* Add disableDefault to API docs

* Update app/src/routes/login/login.vue

Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>

* Remove watch block

* Remove useless variable

* Don't import watch

Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-12-03 14:13:50 -05: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
Aiden Foxx
fa3b1171e8 New OpenID and OAuth2 drivers (#8660)
* 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>
2021-10-21 17:45:01 -04:00
Rijk van Zanten
7897a7a1f5 Cast "DB_EXCLUDE_TABLES" to array (#9029)
Fixes #9001
2021-10-21 15:19:37 -04:00
Aiden Foxx
084c6117b7 Modular authentication (#6942)
* Moved refactoring from LDAP branch

* Moved Auth into packages

* Updated frontend to support custom auth providers and make implementation more flexible

* Fixed exception handling and numerous bugs. Also added provider support to graphql

* Updated frontend to be able to set provider and identifier

* Fixed issue with setting the auth provider in app

* Updated package-lock.json

* Updated package-lock.json

* Cleanup, adding type handling and disabled changing provider

* Added title formatting to SSO links

* Fixed incorrect type export

* Fixed incorrect rc

* Update api/src/services/authentication.ts

* Updated sub-dependencies to rc87

* Fixed linting errors

* Prefer sending provider name as config var

* Pass clone of user info to auth provider instead of reference

* Moved auth from packages into core

* Removed generic login handler

* Fixed graphql complaint

* Moved exception back to api and cleaned up URLs

* Minor tweak

* Pulled across improvements from openid branch

* Fixed fix that wasn't a fix

* Update auth.ts

* Update auth.ts

* Update authentication.ts

* Update login-form.vue

* Regression fixes and cleanup

* Minor flow improvements

* Flipped if and fixed linting warning

* Un-expanded object that didn't need to be expanded!

* Trimmed auth interface for consistency when verifying passwords

* Removed auth-manager, changed login endpoint, broke out SSO links, removed username support, disabled updating external_identifier, generate provider options as part of field generation

* Cleaned up some code comments

* Use named exports in local driver

* Use async defaults for auth abstract class

* Use JSON for auth_data field

* Move session data blob to directus_sessions

* Remove unused export, rename auth->authDriver

* Opinionated changes

* Move login route registration to driver file

* Revert app changes in favor of PR #8277

* Send session token to auth provider and opinionated changes

* Added missing translation

* Fixed empty elements for users without email

* Update api/src/auth/drivers/local.ts

* Move pw verify to local driver, remove CRUD

* Opinions > logical reasoning

* Use session data, cleanup login method on auth serv

* Remove useless null

* Fixed breaking changes from refactor, and fixed build

* Fixed lint warning

* Ignore typescript nonsense

* Update api/src/services/authentication.ts

* Fix provider name passthrough

Co-authored-by: Aiden Foxx <aiden.foxx@sbab.se>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2021-09-27 17:18:20 -04:00
Azri Kahar
83d2b661c8 Allow environment syntax prefix per item within an array (#8257)
* Updating environment syntax prefix to identify prefix per item

* Updating environment syntax prefix documentation to show how to add prefix to array value

* Add additional example

Co-authored-by: Juan Carlos Blanco Delgado <juancarlosjr97@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-09-23 16:15:18 -04:00
Azri Kahar
3b16686180 add spatial_ref_sys as default for DB_EXCLUDE_TABLES (#7923) 2021-09-08 12:17:56 -04:00
Rijk van Zanten
2abb1674ed Add environment variable to force-exclude tables from Directus (#7789) 2021-09-02 20:39:11 -04:00
Rijk van Zanten
d0f6cb35e3 Support dynamic variables in conditional fields (#7202)
* Move accountability type to shared

* Rely on shared for parse-filter

* Install date-fns

* Support dynamic variables in conditional fields

Closes #7157
2021-08-05 01:51:15 +02:00
Rijk van Zanten
787adc9ee0 Allow JSON in env variables (#7201) 2021-08-05 01:20:57 +02:00
Rijk van Zanten
725c95783c Show any sso login warnings in stdout (#7170)
* Show any sso login warnings in stdout

Ref #6897

* Throw more detailed error on email extraction

* Fix CSVs in env var value not cast as array
2021-08-04 00:22:52 +02:00
Rijk van Zanten
96c16ff693 Default SERVE_APP to true (#7003)
Fixes #6993
2021-07-27 17:32:41 +02:00
Tim
2c9ff3bca6 Allow custom transformations of assets (#6593)
* Allow custom transformations of assets

This exposes one query parameter `transforms`, which is a JSON array of
shard transformation operations.

It also updates the asset presets. The UX for this still needs some work

* Rename options to arguments for presets

More explicit

* options -> arguments in setting spec

* Better errors for invalid JSON in asset presets

* Add limit to transforms query parameter

* Use flattened option for extra transforms

* Fix placeholder color of code input

* Allow "simple mode" aliases

* Add documentation

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-07-21 15:57:47 -04:00
j3n57h0m45
79c91ed50d enable custom name for refresh token (#6890) 2021-07-20 15:29:11 +02:00
Rijk van Zanten
11479313c9 Use / as default value for public_url (#6860) 2021-07-16 17:45:39 +02:00
rijkvanzanten
f512ba5c1d Fix typo in asset cache default value 2021-07-13 16:10:57 -04:00
Pascal Jufer
fb0e02cd4b Fix "Duplicate environment variable" error message never showing up (#6740) 2021-07-11 09:52:57 +02:00
rijkvanzanten
79eed74d43 Tweak asset transform max allowed default
Allows for Directus to run ootb on smaller containers/servers, while allowing higher processing speeds for  environments that can handle it
2021-06-26 22:03:25 -04:00
Rijk van Zanten
44082c60e1 Add schema caching (#6456)
* 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
2021-06-22 20:50:20 -04:00
Rijk van Zanten
d56f02697a Allow overriding the s-maxage cache header (#6294)
* Allow overriding the s-maxage cache header

* Only load expiry / set headers when cache exists
2021-06-15 17:11:29 -04:00
Rijk van Zanten
31fbb5f06f Fix type casting of boolean env var (#6190)
Fixes #6189
2021-06-10 16:44:56 -04:00
Pascal Jufer
a2a35aaab5 Add support for _FILE environment variables (#6101)
* Add support for _FILE environment variables

* Enhance processing of _FILE env vars

* Same processing as with other env vars (do not simply treat as string)
- tested successfully
* Warn if both variables are set (EXAMPLE and EXAMPLE_FILE)
* Add comments to make it easier to understand the code

* Set newKey only after file read was successful

* Don't convert value > MAX_SAFE_INTEGER to number

Thanks to @skizer!

As stated by @skizer (from #6119):
  Altho it seems that we do have a numerical value
  it can happen that its outside of Number.MAX_SAFE_INTEGER
  thus resulting in a change of the original intended value
  e.g oauth -> discord -> client_id

* Fix recursive logger-env import

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-06-09 14:08:26 -04:00
skizer
ad8bd3e7cd Don't treat numbers larger than the JS max number size as number values in environment variables (#6119)
* Incorrect parsing of numeric values in env.

* Fixes incorrect parsing of the env. file with numeric values that are outside of Number.MAX_SAFE_INTEGER resulting in unwanted behaviour.
- Like wrong client_ids for oauth. (tested with discord oauth)
* Removed unnecessary multiple "IF" statements since value can only be ether one of the listed values.

* Implements custom_param for OAUTH via grant

According to grants documentation you can provide additionally custom parameters to supported OAUTH provider with ```custom_params```.
This change allows to add them in JSON format and thus adding multiple parameters.

* Fix linter warnings, remove JSON support in favor of nested Grant support

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-06-09 11:53:57 -04:00
Rijk van Zanten
45730c6860 Resolve linter warnings (#6008) 2021-06-02 13:21:13 -04:00
nichols-green
e1e47453ef Changed PORT type from number to string (#6001) 2021-06-02 11:47:12 -04:00
Rijk van Zanten
77e00b7db4 Don't initialize database on file require (#6003) 2021-06-02 11:41:42 -04:00
Rijk van Zanten
02089a6227 Tweak default cache ttl 2021-05-26 10:52:16 -04:00
Rijk van Zanten
8d3102fbad Add max concurrency and max image transform size support (#5795)
* Add assets concurrency and max size controls

* Render no-thumbnail images nicer in app

* Document new asset environment variables

* Update package-lock
2021-05-20 18:18:10 -04:00
Rijk van Zanten
a3898fa321 Add SESSION_STORE options (#5403)
* Allow configuring the session storage driver

Fixes #3814

* Document SESSION_STORE env var

* Add missing dependency

* Docs tweak
2021-04-30 18:18:39 -04:00
rijkvanzanten
801e868554 Fix remaining eslint errors
h/t @paescuj
2021-04-29 15:55:12 -04:00
Rijk van Zanten
c2e4100e55 Add root_redirect option (#4937)
* feat: don't expose admin url (optional)

* Rename REDIRECT_TO_ADMIN -> ROOT_REDIRECT, add docs

Co-authored-by: Michael Mullins <mullinsmikey@users.noreply.github.com>
2021-04-09 11:34:50 -04:00
Thijs-Jan
df107352c2 Resolve relative CONFIG_PATH (#4453) 2021-03-09 16:03:01 -05:00
rijkvanzanten
c2a5622cef Remove unused environment variable 2021-02-26 10:49:19 -05:00
rijkvanzanten
b087967c29 Prioritize env vars over stored vars in config file
Fixes #4191
2021-02-22 20:21:50 -05:00
Rijk van Zanten
f87cbb5824 Make max-payload-size configurable (#4232)
* Make max post size configurable

Closes #2925

* Document max payload size env var
2021-02-22 18:35:07 -05:00
Juan Carlos Blanco Delgado
7dee95e8aa Adding syntax prefix parsing to specific types instead of only string var (#4190)
* Adding syntax prefix parsing to specific types instead of only strings env variables

* Update api/src/env.ts

* Update docs/reference/environment-variables.md

* Update docs/reference/environment-variables.md

* Ignore pre-parsed types

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2021-02-22 11:36:24 -05:00
rijkvanzanten
eb9069c42c Don't use string parsed values in .env 2021-02-19 15:09:14 -05:00
rijkvanzanten
ee96c99ec5 Don't fail on missing config file
Fixes #4106
2021-02-16 17:14:24 -05:00
YannickMol
7830453cfc Align CORS environment variables between middleware and cos (#4099)
* Align CORS environment variables between middleware and cos

Fixes #4080

* Move CORS environment variables to env.ts
2021-02-16 14:56:09 -05:00
WoLfulus
813c731d27 Add config override support to env module (#4029)
* add override support for env module

* Override instead of merge w/ config file

* Default to reading .env instead of process.env

* Make env available in process.env

* Add docs for config-files

* Extend note

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-02-16 11:38:07 -05:00
rijkvanzanten
2f005063cd Force type of certain env vars
Fixes #3705
2021-01-27 11:37:51 -05:00
rijkvanzanten
bfb2df432e Replace ASSETS_CACHE_CONTROL with ASSETS_CACHE_TTL 2020-12-16 14:47:15 -05:00