After several month’s of work, I am happy to announce the first release of GrapeTokenAuth, a token authentication solution for Grape APIs. GTA is a drop-in authentication solution for Grape APIs that aims to maintain a low direct-dependency footprint. GrapeTokenAuth is a port of devise_token_auth, whereas DTA is a devise and rails solution GTA depends on grape and warden. GrapeTokenAuth has built in compatibility with two mature front end libraries: ng-token-auth (for angular) and jToker (for jQuery). If you are build Grape APIs and have been looking for authentication, grape_token_auth may suit your needs.
GrapeTokenAuth supports ActiveRecord for database access, which means that if you are creating a standalone grape app it should be easy to integrate with existing Rails models you might have. Furthermore, if you have been looking for a devise like solution for grape, GTA provides many of the same features such as password-reset and confirmation for email-users. Finally, it also supports omniauth providers and integration with the Omniauth gems.
Getting started with GrapeTokenAuth requires some setup (as you would expect from an authentication solution), so I encourage you to take a look at the README and Wiki for full documentation. I also have a blog post that walks you through setting up GrapeTokenAuth in a simple grape app. Finally, there is a full demo repo here.
GrapeTokenAuth will strive to be a full port of devise_token_auth (some minor features have not been implemented). This means that I intend to stay up-to-date with new features merged into DTA. However, I also hope to expand and improve on GrapeTokenAuth. I plan to do this by splitting out features into smaller gems so that the dependency footprint of the “main” gem can be reduced even further. Additionally, I want to support other ORMs such as sequel or rom-rb.
Feedback or looking to contribute?
If you are looking to contribute, please fork and submit PRs. I plan on tagging a few issues where people can jump in and. If you want to submit feedback please open an issue or find me on twitter.