Awesome Open Source
Awesome Open Source

security Code Climate Gem Version License: MIT

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  

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


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 =>

Step 9 - Configure scopes in your controller

Scope your controllers. Examples on github wiki or multi-tenant starter app.


Step 10 - Environment (ENV) Variables

Set a sent from email address for confirmation and password reset emails more info here. .

PHC_MTDEVISE_SENDER = [email protected]

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

Circle CI

Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Ruby (222,621
Ruby On Rails (68,431
Authentication (26,919
Step (21,609
Routes (8,882
Subdomain (1,994
Devise (1,855
Rails Engine (544
Multitenancy (352
Multi Tenant (352
Tenant (64
Bradpotts (3