Releases: RohanNagar/thunder
v3.1.0
✳️ Added
-
Support for secret values within Thunder configuration.
If you want to keep specific values in your configuration file a secret,
you can now use the${name-of-secret}notation.By default, Thunder will try to read secrets from environment variables.
You can also specify where Thunder should read secrets from with new
configuration:secrets: provider: [env|secretsmanager]
-
OAuth 2.0 is now a supported authentication mechanism. Currently, JWT
tokens that use HMAC or RSA for token signing are supported. Use the following config:auth: type: oauth hmacSecret: ${thunderHmacSigningSecret} rsaPublicKeyFilePath: "path/to/public-key.der" issuer: "your-issuer-name" audience: "optional-audience-to-verify"
-
Timer and success/failure metrics for both basic and OAuth
authentication. -
Thunder is now more performant as it processes requests asynchronously
behind the scenes. -
Thunder now times out requests after 30 seconds by default. You can
customize the timeout duration with the following config:options: operationTimeout: 20s
✴️ Changed
- The
setProperty(String, Object)method onUserobjects has been
changed frompublictopackage-privatein order to avoid potential
race conditions.
➡️ DevOps
- Migrated integration tests to use Artillery instead of a custom framework.
- Added load tests to ensure Thunder performs well under load.
v3.0.4
➡️ DevOps
- Add ability to perform a full Thunder release through Github Actions.
v3.0.3
➡️ DevOps
- Release artifacts into Maven Central on tags with Github Actions.
v3.0.2
✴️ Changed
- Updated the
verifyUsermethod in the Java client to return aCompletableFuture<String>instead of aCompletableFuture<ResponseBody>.
v3.0.1
⚛ Fixed
- Updated the client Javadoc return descriptions.
v3.0.0
✳️ Added
- OpenAPI (Swagger) specifications are now available at
/openapi.yamland/openapi.json - Swagger UI is available at
/swagger - New configuration option: Allow common password mistakes
- Ability to use different database providers
- Added MongoDB database provider
- Added Healthcheck for email providers
- Added more metrics for better observability
- New password hashing algorithm:
sha256 - DynamoDB table will be created on application startup if it does not exist
- A Helm chart is available for deploying Thunder to a Kubernetes cluster
✴️ Changed
- Required
typeoption on thedatabaseconfiguration. - The
md5password hashing algorithm is no longer available. You should usesha256instead. - Property validation configuration has changed, and allows for more flexible validation. See the docs for more details:
properties:
allowSubset: [true|false]
allowSuperset: [true|false]
allowed:
- name:
type:
- name:
type:- Email verification is now disabled by default. There is a new
typeoption in the configuration to specify your email provider:
email:
type: [none|ses]- Additional
Userproperties are no longer contained in a JSON object. They should be included directly in theUserobject:
{
"email" : {
"address" : "test@test.com",
"verified" : true,
"verificationToken" : "hashToken"
},
"password" : "12345",
"customBoolean" : true,
"customDouble" : 1.2,
"customInt" : 1,
"customList" : ["hello", "world"],
"customMap" : {
"key" : "value"
},
"customString" : "value"
}⚛ Fixed
- A potential bug that would cause all of a user's data to be lost when updating a user's email address has been addressed.
☕ Client
- The endpoint used to build
ThunderClientis no longer required to end in/. - All methods in
ThunderClientnow return aCompletableFuture<User>instead of a retrofitCall<User>.
➡️ DevOps
- Migrated the CI build from
Travis CItoGitHub Actions CI. - Migrated Dependabot updates from
dependabot.comto Github-Native. - Added GitHub Action to automatically check for updates to the Bootstrap CSS version.
- Added Github Action to automatically approve pull requests from Dependabot.
Notable Dependency Upgrades
- AWS Java SDK upgraded from
1.11.xto2.x asyncin/scriptsupgraded from2.6.2to3.x
v2.1.0
✳️ Added
-
New endpoint to reset a user's verification status (
POST /verify/reset). -
Server-side hashing is now available. In the new
passwordHashconfiguration, setserverSideHashtotruein order to enable it. Server-side hashing will use the algorithm defined in thealgorithmoption. By default, the algorithm issimple, which does not actually perform a hash. You can also disable the header check for passwords. By default, most endpoints will require thepasswordheader to be set to the user's password. To disable this, setheaderChecktofalse.passwordHash: algorithm: [simple|md5|bcrypt] serverSideHash: true headerCheck: true
✴️ Changed
- When updating a user (
PUT /users), email verification information can no longer be overwritten. Existing verification status will remain the same, or if the email has been updated, the verification status will be reset. - (docs) Moved user documentation from the Github Wiki to ReadTheDocs.
- (docs) Updated all Javadoc to match new Thunder Javadoc guidelines.
⚛ Fixed
- (docs) Javadoc for generated Dagger source files is no longer generated.
☕ Client
- Support for the new
/verify/resetendpoint.
➡️ DevOps
- Run all CI tasks on Travis, and run multiple integration tests in CI.
- Update GitHub Issue templates to set default labels and assignees.
Dependency Upgrades
aws-java-sdk1.11.385 -> 1.11.486checkstyle8.12 -> 8.16dagger2.17 -> 2.21dropwizard1.3.5 -> 1.3.8jackson-api2.9.6 -> 2.9.8jacoco-maven-plugin0.8.1 -> 0.8.2junit-jupiter5.2.0 -> 5.3.2junit-platform1.2.0 -> 1.3.2maven-shade-plugin3.1.1 -> 3.2.1maven-surefire-plugin2.22.0 -> 2.22.1mockito2.21.0 -> 2.23.4nexus-staging-maven-plugin1.6.7 -> 1.6.8retrofit2.4.0 -> 2.5.0- Python (Documentation) Dependencies:
sphinx1.7.7 -> 1.8.2
- Node.js (DevOps) Dependencies:
aws-sdk2.291.0 -> 2.391.0eslint5.3.0 -> 5.12.1eslint-config-google0.9.1 -> 0.11.0thunder-client0.3.0 -> 0.4.1
v2.0.0
✳️ Added
-
Property Validation
Additional properties defined in the
UserJSON can be validated onPOSTandPUT. Simply define thepropertiesin the configuration, and they will be automatically validated. To disable validation, do not includepropertiesin the configuration.Example:
properties: - name: myFirstProperty type: string - name: mySecondProperty type: list
Supported property types are:
string,integer,double,boolean,list, andmap. -
Optionally Disable Email Verification
You can now disable email verification if you don't want the endpoints to be active. Simply set the
enabledoption tofalse:email: enabled: false
-
More Email Configuration Options
Use your own HTML pages or email message bodies, or use a custom subject line! Default ones are provided, but you can specify your own:
email: messageOptions: subject: Welcome to My App bodyHtmlFilePath: /path/to/verification.html bodyTextFilePath: /path/to/verification.txt urlPlaceholderString: PLACEHOLDER successHtmlFilePath: /path/to/success.html
On each
POST/verifyrequest, a verification URL will be generated for the specific user and a String replacement will replace theurlPlaceholderStringwith the correct URL before sending the message. The default placeholder string isCODEGEN-URL. -
Documentation on How to Get Started with HTTPS
✴️ Changed
-
⚠️ PilotUserhas been renamed toUser -
⚠️ The user object now has an expandable map of properties, so the user JSON is no longer confined to what is defined in the code.Example of new User object:
{ "email" : { "address" : "test@test.com", "verified" : "true", "verificationToken" : "hashToken" }, "password" : "12345", "properties" : { "stringProperty" : "myUserObject", "integerProperty": 1000, "listsWorkToo": ["hello", "world"] } }This applies to ALL
/usermethods:GET,POST,PUT,DELETEand ALL/verifymethods:GET,POST -
⚠️ All configuration options that used hyphens now are camel-case. For example,table-namehas becometableName -
⚠️ Thesesconfiguration object has been renamed toemail -
⚠️ Thedynamoconfiguration object has been renamed todatabase -
⚠️ The package name for theapi,application, andclienthave changed fromcom.sanction.thundertocom.sanctionco.thunder
⚛ Fixed
POST/verifynow correctly checks for a matching user password in the request header before sending the email.
☕ Client
⚠️ PilotUserrenamed toUserand object definition changed. See theChangedsection above for more information.
➡️ DevOps
- New logo!
- Enforce Javadoc on class definitions
- Switch to Codecov for coverage reports
- A new integration test format, more thorough tests, and integration tests against the Docker image
- Maven release build adds Javadoc, sources, and GPG signatures
Dependency Upgrades
aws-java-sdk1.11.311 -> 1.11.385checkstyle8.9 -> 8.12dagger2.15 -> 2.17dropwizard1.3.1 -> 1.3.5jackson-api2.9.5 -> 2.9.6junit4.12 -> 5.2.0maven-compiler-plugin3.7.0 -> 3.8.0maven-shade-plugin2.3 -> 3.1.1maven-surefire-plugin2.21.0 -> 2.22.0mockito2.18.0 -> 2.21.0thunder-client0.1.0 -> 0.2.0- Node.js (DevOps) Dependencies:
async2.6.0 -> 2.6.1aws-sdk2.238.1 -> 2.291.0eslint4.19.1 -> 5.3.0
v1.2.0
Artifacts
Docker image corresponding to this release: rohannagar/thunder:1.2.0
JitPack Build for Client: v1.2.0
Application JAR file is attached to this release.
Features
- Add support for returning HTML in the response for
/verify
Client
⚠️ Upgraded Retrofit from v1.9 to v2.4-
All endpoint URLs passed into
ThunderBuildermust end in a slash/ -
ThunderClientnow returns aCall<PilotUser>instead ofPilotUser. Example:1.1.2 (old):
PilotUser user = thunderClient.getUser("USERNAME", "PASSWORD");1.2.0 (new):
PilotUser user = thunderClient.getUser("USERNAME", "PASSWORD").execute().body();
-
- Added
sendVerificationEmail()method that callsPOST /verify - Added
verifyUser()overload that provides an option for theResponseType(either HTML or JSON)
DevOps
- Added
bootstrap.shscript to easily bootstrap a new development machine with dependencies - All Node.js code is now being checked for code style using ESLint
- The
thunder-clientcode has been moved into its own package here - Introduce a build on GitLab for Docker builds. See the mirror here
- Thunder is now available as a Docker image! Click here
- Added Kubernetes deployment files to easily deploy Thunder on a K8s cluster
Miscellaneous
- Code coverage is now at 99% 🎉
Dependency Upgrades
aws-java-sdk1.11.275 -> 1.11.311checkstyle8.2 -> 8.9 [ChangeImportOrdercheck toCustomImportOrder]dagger2.14.1 -> 2.15dropwizard1.2.3 -> 1.3.1jackson2.9.4 -> 2.9.5jacoco-plugin0.8.0 -> 0.8.1mockito2.13.0 -> 2.18.0retrofit1.9.0 -> 2.4.0 [⚠️ Breaking change - see above]- Node.js (DevOps) Dependencies:
argparse1.0.9 -> 1.0.10aws-sdk2.192.0 -> 2.224.1
v1.1.2
JitPack build is back to normal.
DevOps Improvements
- Travis now runs integration tests on PR checks and commits to master
Dependency Upgrades
-
aws-java-sdk1.11.273 -> 1.11.275 -
Node.js (DevOps) Dependencies:
aws-ses-local1.1.1 -> 1.3.0aws-sdk2.152.0 -> 2.192.0