MTDevise Rails 5.1 Multi-Tenancy Engine Documentation
PHC MTDevise Rails 5.1 engine adds multi-tenant and account management features to rails Devise gem. Plataformatec Devise and required custom Bootstrap Devise views included.
- Multi-tenancy using subdomain scoping and account_id column.
- Adds basecamp style logins to devise authentication gem.
- Welcome, Dashboard with custom Devise views included.
- Highly customizable views and layouts using standard bootstrap 3 code.
- Central login screen for all tenants (users) or logins through a subdomain.
- Mis-Spelling and redirect to welcome screen if subdomain none-existent.
- Compatible with postgre, mysql and sqlite (for dev environments).
Step 1 - Add user model to your app (Must be Done First!!)
Generate a user.rb file in your mainapp and add the code below
rails g model User
include Mtdevise::UserStorage
Step 2 - Add Mtdevise to your gemfile and run command
gem 'mtdevise', '~> 16.0'
bundle exec install
Step 3 - Add and migrate mtdevise database tables
rake railties:install:migrations
rake db:migrate
Step 4 - Configure ActionMailer
- Mailer functions are required in order for mtdevise to operate.
- Mailer is used for confirmation and password reset functions.
Step 5 - Mount the Engine in your Routes File
Add this line at the end of the routes file.
mount Mtdevise::Engine, :at => '/'
Step 6 - Constrain the routs you want secured
All the routes you want to have multi-tenacy login functions goes in between the constraints block.
constraints(Mtdevise::Constraints::SubdomainRequired) do
# Routes Requiring Security & Multi-Tenancy Routes
end
Step 7 - Modifications to MainApp Controllers & Database
Your app needs modification to controllers (example)
Any corresponding db database tables must have an accounts_id column
accounts_id
Step 8 - Add mtdevise extension to models
Add the mtdevise extension to the top of all models for the routes configured in the previous step.
def self.scoped_to(account)
where(:account_id => account.id)
end
Step 9 - Configure scopes in your controller
Scope your controllers. Examples on github wiki or multi-tenant starter app.
.scoped_to(current_account)
Step 10 - Environment (ENV) Variables
Set a sent from email address for confirmation and password reset emails more info here. .
PHC_MTDEVISE_SENDER = no_reply@example.com
Additional Information
Views - Mtdevise Views Can be Customized
Once installed views can be generated and customized to your apps needs.
rails generate mtdevise:views
rake assets:clobber
rake assets:precompile
Additional Documentation
Multi-Tenant Starter App
Documentation (Github Wiki)
Environment Variables
Issues & Bug Reports
Past Security Patch Notes
Managed by PHCNetworks