ApiEngineBase
This is an API only base engine to build on top of. This Engine takes care of all Authentication, Token Refresh, and RBAC Roles so that you do not have to! For all applications, you can get right to work on implementing the code directly related to your project rather than dealing with the administrative overhead.
While this gem is heavily opinionated, everything can be configured to your liking.
Installation
Add this line to your application's Gemfile:
gem "api_engine_base"
And then execute:
$ bundle
Or install it yourself as:
$ gem install api_engine_base
Initializing ApiEngineBase
Please follow all steps in Initializing ApiEngineBase
Available Routes
For more info, check out Controllers ReadMe
Additionally, You can check out RSpec Integration Testing
Available Models
ApiEngineBase provides several Models at the in the root namespace. Core Models like User
and UserSecret
are readily available. Don't forget! You can add additional methods to these classes by opening them back up.
For more info, check out Models ReadMe
Authentication (JWT BearerToken)
Authentication ensures that we know which user is requesting the action. When the Engine is unable to authenticate, a 401
status code is returned.
For more info, check out Authentication ReadMe
Authorization (RBAC)
Authorization is only done after authentication. This is the act of ensuring that the user can perform the action it is requesting. Put differently, I know who you are, but I need to validate you have permissions to complete the action. When the engine is unable to authorize the user, a 403
status code is returned.
For more info, check out Authentication ReadMe
Sensitive Changes
For more info, check out Sensitive Routes
ServiceBase
ServiceBase is built on top of Interactor. The ServiceBase is the heart of all logic for ApiEngineBase. It includes Logging and enhanced ArgumentValidation that can directly return back to the API request.
For more info, check out ServiceBase ReadMe
License
The engine is available as open source under the terms of the MIT License.