Giter VIP home page Giter VIP logo

multi-tenancy-devise's Introduction

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

multi-tenancy-devise's People

Contributors

bitdeli-chef avatar bradpotts avatar shirjeel-alam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

multi-tenancy-devise's Issues

Remove Rest of Simple Form

When I started the project half was on simple form and other half on form_for. I chose form_for to rely on less dependencies and some users where having troubles with simple_form bootstrap settings for customizing.

Addin stripe payment system.

Stripe Plan & Payment System

  • Stripe Payment Integration
  • Plan/Subscription Stripe payments integration
  • Plan Switching & Management

Also open to integrating with other payment systems, but since I know stripe the most will start with that.

NameError: uninitialized constant User

Created the user.rb and added in the required elements - it will work in c9 (dev) but it will not push to heroku, it throws that error.

Any idea what might be causing this?

Fix alert and flash system.

Currently working on flash notice & alert system.
-- Flashes text, closes on x, and aligned right.
-- Missing colour and not properly inputting the needed bootstrap class.

Documentation

Start on initial setup documentation.

  • gem file
  • Needs SMTP Setup
  • Routes Mounting & Constraints
  • Railties and Final Install
  • Heroku Setup

Rails 5

Upgrade to rails 5 when stable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.