Releases: parse-community/parse-server
5.0.0-alpha.1
5.0.0-alpha.1 (2021-10-12)
Breaking Changes
- Improved schema caching through database real-time hooks. Reduces DB queries, decreases Parse Query execution time and fixes a potential schema memory leak. If multiple Parse Server instances connect to the same DB (for example behind a load balancer), set the Parse Server Option
databaseOptions.enableSchemaHooks: true
to enable this feature and keep the schema in sync across all instances. Failing to do so will cause a schema change to not propagate to other instances and re-syncing will only happen when these instances restart. The optionsenableSingleSchemaCache
andschemaCacheTTL
have been removed. To use this feature with MongoDB, a replica set cluster with change stream support is required. (Diamond Lewis, SebC) #7214 - Added file upload restriction. File upload is now only allowed for authenticated users by default for improved security. To allow file upload also for Anonymous Users or Public, set the
fileUpload
parameter in the Parse Server Options (dblythy, Manuel Trezza) #7071 - Removed parse-server-simple-mailgun-adapter dependency; to continue using the adapter it has to be explicitly installed (Manuel Trezza) #7321
- Remove support for MongoDB 3.6 which has reached its End-of-Life date and PostgreSQL 10 (Manuel Trezza) #7315
- Remove support for Node 10 which has reached its End-of-Life date (Manuel Trezza) #7314
- Remove S3 Files Adapter from Parse Server, instead install separately as
@parse/s3-files-adapter
(Manuel Trezza) #7324 - Remove Session field
restricted
; the field was a code artifact from a feature that never existed in Open Source Parse Server; if you have been using this field for custom purposes, consider that for new Parse Server installations the field does not exist anymore in the schema, and for existing installations the field default valuefalse
will not be set anymore when creating a new session (Manuel Trezza) #7543
Notable Changes
- Alphabetical ordered GraphQL API, improved GraphQL Schema cache system and fix GraphQL input reassign issue (Moumouls) #7344
- Added Parse Server Security Check to report weak security settings (Manuel Trezza, dblythy) #7247
- EXPERIMENTAL: Added new page router with placeholder rendering and localization of custom and feature pages such as password reset and email verification (Manuel Trezza) #7128
- EXPERIMENTAL: Added custom routes to easily customize flows for password reset, email verification or build entirely new flows (Manuel Trezza) #7231
- Added Deprecation Policy to govern the introduction of breaking changes in a phased pattern that is more predictable for developers (Manuel Trezza) #7199
- Add REST API endpoint
/loginAs
to create session of any user with master key; allows to impersonate another user. (GormanFletcher) #7406 - Add official support for MongoDB 5.0 (Manuel Trezza) #7469
- Added Parse Server Configuration
enforcePrivateUsers
, which will remove public access by default on new Parse.Users (dblythy) #7319 - ci: add node engine version check (Manuel Trezza) #7574
Other Changes
- Support native mongodb syntax in aggregation pipelines (Raschid JF Rafeally) #7339
- Fix error when a not yet inserted job is updated (Antonio Davi Macedo Coelho de Castro) #7196
- request.context for afterFind triggers (dblythy) #7078
- Winston Logger interpolating stdout to console (dplewis) #7114
- Added convenience method
Parse.Cloud.sendEmail(...)
to send email via email adapter in Cloud Code (dblythy) #7089 - LiveQuery support for $and, $nor, $containedBy, $geoWithin, $geoIntersects queries (dplewis) #7113
- Supporting patterns in LiveQuery server's config parameter
classNames
(Nes-si) #7131 - Added
requireAnyUserRoles
andrequireAllUserRoles
for Parse Cloud validator (dblythy) #7097 - Support Facebook Limited Login (miguel-s) #7219
- Removed Stage name check on aggregate pipelines (BRETT71) #7237
- Retry transactions on MongoDB when it fails due to transient error (Antonio Davi Macedo Coelho de Castro) #7187
- Bump tests to use Mongo 4.4.4 (Antonio Davi Macedo Coelho de Castro) #7184
- Added new account lockout policy option
accountLockout.unlockOnPasswordReset
to automatically unlock account on password reset (Manuel Trezza) #7146 - Test Parse Server continuously against all recent MongoDB versions that have not reached their end-of-life support date, added MongoDB compatibility table to Parse Server docs (Manuel Trezza) #7161
- Test Parse Server continuously against all recent Node.js versions that have not reached their end-of-life support date, added Node.js compatibility table to Parse Server docs (Manuel Trezza) 7161
- Throw error on invalid Cloud Function validation configuration (dblythy) #7154
- Allow Cloud Validator
options
to be async (dblythy) #7155 - Optimize queries on classes with pointer permissions (Pedro Diaz) #7061
- Test Parse Server continuously against all relevant Postgres versions (minor versions), added Postgres compatibility table to Parse Server docs (Corey Baker) #7176
- Randomize test suite (Diamond Lewis) #7265
- LDAP: Properly unbind client on group search error (Diamond Lewis) #7265
- Improve data consistency in Push and Job Status update (Diamond Lewis) #7267
- Excluding keys that have trailing edges.node when performing GraphQL resolver (Chris Bland) #7273
- Added centralized feature deprecation with standardized warning logs (Manuel Trezza) #7303
- Use Node.js 15.13.0 in CI (Olle Jonsson) #7312
- Fix file upload issue for S3 compatible storage (Linode, DigitalOcean) by avoiding empty tags property when creating a file (Ali Oguzhan Yildiz) #7300
- Add building Docker image as CI check (Manuel Trezza) #7332
- Add NPM package-lock version check to CI (Manuel Trezza) #7333
- Fix incorrect LiveQuery events triggered for multiple subscriptions on the same class with different events #7341
- Fix select and excludeKey queries to properly accept JSON string arrays. Also allow nested fields in exclude (Corey Baker) #7242
- Fix LiveQuery server crash when using $all query operator on a missing object key (Jason Posthuma) #7421
- Added runtime deprecation warnings (Manuel Trezza) #7451
- Add ability to pass context of an object via a header, X-Parse-Cloud-Context, for Cloud Code triggers. The header addition allows client SDK's to add context without injecting _context in the body of JSON objects (Corey Baker) #7437
- Add CI check to add changelog entry (Manuel Trezza) #7512
- Refactor: uniform issue templates...
4.10.4
Security Fixes
- Strip out sessionToken when LiveQuery is used on Parse.User (Daniel Blyth) GHSA-7pr3-p5fm-8r9x
4.10.3
Security Fixes
- Validate
explain
query parameter to avoid a server crash due to MongoDB bug NODE-3463 (Kartal Kaan Bozdogan) GHSA-xqp8-w826-hh6x
4.10.2
4.10.1
- Updated to Parse JS SDK 3.3.0 and other security fixes (Manuel Trezza) #7508
⚠️ This includes a security fix of the Parse JS SDK wherelogIn
will default toPOST
instead ofGET
method. This may require changes in your deployment before you upgrade to this release, see the Parse JS SDK 3.0.0 release notes.
4.10.0
Versions >4.5.2 and <4.10.0 are skipped.
⚠️ A security incident caused a number of incorrect version tags to be pushed to the Parse Server repository. These version tags linked to a personal fork of a contributor who had write access to the repository. The code to which these tags linked has not been reviewed or approved by Parse Platform. Even though no releases were published with these incorrect versions, it was possible to define a Parse Server dependency that pointed to these version tags, for example if you defined this dependency:"parse-server": "[email protected]:parse-community/parse-server.git#4.9.3"We have since deleted the incorrect version tags, but they may still show up in your personal fork on GitHub or locally. We do not know when these tags have been pushed to the Parse Server repository, but we first became aware of this issue on July 21, 2021. We are not aware of any malicious code or concerns related to privacy, security or legality (e.g. proprietary code). However, it has been reported that some functionality does not work as expected and the introduction of security vulnerabilities cannot be ruled out.
You may be also affected if you used the Bitnami image for Parse Server. Bitnami picked up the incorrect version tag
4.9.3
and published a new Bitnami image for Parse Server.If you are using any of the affected versions, we urgently recommend to upgrade to version
4.10.0
.
GHSA-593v-wcqx-hq2w
4.5.2
- SECURITY FIX: Fixes incorrect session property
authProvider: password
of anonymous users. When signing up an anonymous user, the session fieldcreatedWith
indicates incorrectly that the session has been created using username and password withauthProvider: password
, instead of an anonymous sign-up withauthProvider: anonymous
. This fixes the issue by setting the correctauthProvider: anonymous
for future sign-ups of anonymous users. This fix does not fix incorrectauthProvider: password
for existing sessions of anonymous users. Consider this if your app logic depends on theauthProvider
field. (Corey Baker) GHSA-23r4-5mxp-c7g5
4.5.0
BREAKING CHANGES:
- FIX: Consistent casing for afterLiveQueryEvent. The afterLiveQueryEvent was introduced in 4.4.0 with inconsistent casing for the event names, which was fixed in 4.5.0. #7023. Thanks to dblythy.
- FIX: Properly handle serverURL and publicServerUrl in Batch requests. #7049. Thanks to Zach Goldberg.
- IMPROVE: Prevent invalid column names (className and length). #7053. Thanks to Diamond Lewis.
- IMPROVE: GraphQL: Remove viewer from logout mutation. #7029. Thanks to Antoine Cormouls.
- IMPROVE: GraphQL: Optimize on Relation. #7044. Thanks to Antoine Cormouls.
- NEW: Include sessionToken in onLiveQueryEvent. #7043. Thanks to dblythy.
- FIX: Definitions for accountLockout and passwordPolicy. #7040. Thanks to dblythy.
- FIX: Fix typo in server definitions for emailVerifyTokenReuseIfValid. #7037. Thanks to dblythy.
- SECURITY FIX: LDAP auth stores password in plain text. See GHSA-4w46-w44m-3jq3 for more details about the vulnerability and da905a3 for the fix. Thanks to Fabian Strachanski.
- NEW: Reuse tokens if they haven't expired. #7017. Thanks to dblythy.
- NEW: Add LDAPS-support to LDAP-Authcontroller. #7014. Thanks to Fabian Strachanski.
- FIX: (beforeSave/afterSave): Return value instead of Parse.Op for nested fields. #7005. Thanks to Diamond Lewis.
- FIX: (beforeSave): Skip Sanitizing Database results. #7003. Thanks to Diamond Lewis.
- FIX: Fix includeAll for querying a Pointer and Pointer array. #7002. Thanks to Corey Baker.
- FIX: Add encryptionKey to src/options/index.js. #6999. Thanks to dblythy.
- IMPROVE: Update PostgresStorageAdapter.js. #6989. Thanks to Vitaly Tomilov.
4.4.0
- IMPROVE: Update PostgresStorageAdapter.js. #6981. Thanks to Vitaly Tomilov
- NEW: skipWithMasterKey on Built-In Validator. #6972. Thanks to dblythy.
- NEW: Add fileKey rotation to GridFSBucketAdapter. #6768. Thanks to Corey Baker.
- IMPROVE: Remove unused parameter in Cloud Function. #6969. Thanks to Diamond Lewis.
- IMPROVE: Validation Handler Update. #6968. Thanks to dblythy.
- FIX: (directAccess): Properly handle response status. #6966. Thanks to Diamond Lewis.
- FIX: Remove hostnameMaxLen for Mongo URL. #6693. Thanks to markhoward02.
- IMPROVE: Show a message if cloud functions are duplicated. #6963. Thanks to dblythy.
- FIX: Pass request.query to afterFind. #6960. Thanks to dblythy.
- SECURITY FIX: Patch session vulnerability over Live Query. See GHSA-2xm2-xj2q-qgpj for more details about the vulnerability and 78b59fb for the fix. Thanks to Antonio Davi Macedo Coelho de Castro.
- IMPROVE: LiveQueryEvent Error Logging Improvements. #6951. Thanks to dblythy.
- IMPROVE: Include stack in Cloud Code. #6958. Thanks to dblythy.
- FIX: (jobs): Add Error Message to JobStatus Failure. #6954. Thanks to Diamond Lewis.
- NEW: Create Cloud function afterLiveQueryEvent. #6859. Thanks to dblythy.
- FIX: Update vkontakte API to the latest version. #6944. Thanks to Antonio Davi Macedo Coelho de Castro.
- FIX: Use an empty object as default value of options for Google Sign in. #6844. Thanks to Kevin Kuang.
- FIX: Postgres: prepend className to unique indexes. #6741. Thanks to Corey Baker.
- FIX: GraphQL: Transform input types also on user mutations. #6934. Thanks to Antoine Cormouls.
- FIX: Set objectId into query for Email Validation. #6930. Thanks to Danaru.
- FIX: GraphQL: Optimize queries, fixes some null returns (on object), fix stitched GraphQLUpload. #6709. Thanks to Antoine Cormouls.
- FIX: Do not throw error if user provide a pointer like index onMongo. #6923. Thanks to Antoine Cormouls.
- FIX: Hotfix instagram api. #6922. Thanks to Tim.
- FIX: (directAccess/cloud-code): Pass installationId with LogIn. #6903. Thanks to Diamond Lewis.
- FIX: Fix bcrypt binary incompatibility. #6891. Thanks to Manuel Trezza.
- NEW: Keycloak auth adapter. #6376. Thanks to Rhuan.
- IMPROVE: Changed incorrect key name in apple auth adapter tests. #6861. Thanks to Manuel Trezza.
- FIX: Fix mutating beforeSubscribe Query. #6868. Thanks to dblythy.
- FIX: Fix beforeLogin for users logging in with AuthData. #6872. Thanks to Kevin Kuang.
- FIX: Remove Facebook AccountKit auth. #6870. Thanks to Diamond Lewis.
- FIX: Updated TOKEN_ISSUER to 'accounts.google.com'. #6836. Thanks to Arjun Vedak.
- IMPROVE: Optimized deletion of class field from schema by using an index if available to do an index scan instead of a collection scan. #6815. Thanks to Manuel Trezza.
- IMPROVE: Enable MongoDB transaction test for MongoDB >= 4.0.4 #6827. Thanks to Manuel.
4.3.0
- PERFORMANCE: Optimizing pointer CLP query decoration done by DatabaseController#addPointerPermissions #6747. Thanks to mess-lelouch.
- SECURITY: Fix security breach on GraphQL viewer 78239ac, secuity advisory. Thanks to Antoine Cormouls.
- FIX: Save context not present if direct access enabled #6764. Thanks to Omair Vaiyani.
- NEW: Before Connect + Before Subscribe #6793. Thanks to dblythy.
- FIX: Add version to playground to fix CDN #6804. Thanks to Antoine Cormouls.
- NEW (EXPERIMENTAL): Idempotency enforcement for client requests. This deduplicates requests where the client intends to send one request to Parse Server but due to network issues the server receives the request multiple times. Caution, this is an experimental feature that may not be appropriate for production. #6748. Thanks to Manuel Trezza.
- FIX: Add production Google Auth Adapter instead of using the development url #6734. Thanks to SebC..
- IMPROVE: Run Prettier JS Again Without requiring () on arrow functions #6796. Thanks to Diamond Lewis.
- IMPROVE: Run Prettier JS #6795. Thanks to Diamond Lewis.
- IMPROVE: Replace bcrypt with @node-rs/bcrypt #6794. Thanks to LongYinan.
- IMPROVE: Make clear description of anonymous user #6655. Thanks to Jerome De Leon.
- IMPROVE: Simplify GraphQL merge system to avoid js ref bugs #6791. Thanks to Antoine Cormouls.
- NEW: Pass context in beforeDelete, afterDelete, beforeFind and Parse.Cloud.run #6666. Thanks to yog27ray.
- NEW: Allow passing custom gql schema function to ParseServer#start options #6762. Thanks to Luca.
- NEW: Allow custom cors origin header #6772. Thanks to Kevin Yao.
- FIX: Fix context for cascade-saving and saving existing object #6735. Thanks to Manuel.
- NEW: Add file bucket encryption using fileKey #6765. Thanks to Corey Baker.
- FIX: Removed gaze from dev dependencies and removed not working dev script #6745. Thanks to Vincent Semrau.
- IMPROVE: Upgrade graphql-tools to v6 #6701. Thanks to Yaacov Rydzinski.
- NEW: Support Metadata in GridFSAdapter #6660. Thanks to Diamond Lewis.
- NEW: Allow to unset file from graphql #6651. Thanks to Antoine Cormouls.
- NEW: Handle shutdown for RedisCacheAdapter #6658. Thanks to promisenxu.
- FIX: Fix explain on user class #6650. Thanks to Manuel.
- FIX: Fix read preference for aggregate #6585. Thanks to Manuel.
- NEW: Add context to Parse.Object.save #6626. Thanks to Manuel.
- NEW: Adding ssl config params to Postgres URI #6580. Thanks to Corey Baker.
- FIX: Travis postgres update: removing unnecessary start of mongo-runner #6594. Thanks to Corey Baker.
- FIX: ObjectId size for Pointer in Postgres #6619. Thanks to Corey Baker.
- IMPROVE: Improve a test case #6629. Thanks to Gordon Sun.
- NEW: Allow to resolve automatically Parse Type fields from Custom Schema #6562. Thanks to Antoine Cormouls.
- FIX: Remove wrong console log in test #6627. Thanks to Gordon Sun.
- IMPROVE: Graphql tools v5 #6611. Thanks to Yaacov Rydzinski.
- FIX: Catch JSON.parse and return 403 properly #6589. Thanks to Gordon Sun.
- PERFORMANCE: Allow covering relation queries with minimal index #6581. Thanks to Noah Silas.
- FIX: Fix Postgres group aggregation #6522. Thanks to Siddharth Ramesh.
- NEW: Allow set user mapped from JWT directly on request #6411. Thanks to Gordon Sun.