sails-hook-sso

0.0.9 • Public • Published

sails-hook-sso

Passport-SSO for the Sails framework. This is still in development and not ready for production use.

This project relies on passport-sso

npm install passport-sso --save

Getting started

1.) Create a sso.js file in the sails project's config directory (i.e: config/sso.js)

2.) Add the following to your new sso.js config file. Make sure to change the values of each setting to match that of your database connections and schema

  /***************************************************************************
  *                                                                          *
  * Override sails-hook-sso database connections                             *
  *                                                                          *
  ***************************************************************************/
 
  connections: {
    hosts       : "{hosts-connection}",     # Connection for host table/collection (config/connections.js)
    providers   : "{providers-connection}", # Connection for providers table/collection (config/connections.js)
    users       : "{users-connection}",     # Connection for users table/collection (config/connections.js)
    passports   : "{passports-connection}", # Connection for passports table/collection (config/connections.js)
    groups      : "{groupsConnection}",     # Connection for groups table/collection (config/connections.js)
  },
 
  /***************************************************************************
  *                                                                          *
  * Override sails-hook-sso database table/collection names                  *
  *                                                                          *
  ***************************************************************************/
  collections: {
      hosts       : "sso_hosts",     # Name of your host table/collection
      providers   : "sso_providers", # Name of your provider table/collection
      users       : "sso_users",     # Name of your user table/collection
      passports   : "sso_passports", # Name of your passport table/collection
      groups      : "sso_groups",    # Name of your group table/collection
  }

1.) Add a host controller (i.e: api/controllers/V1/Settings/Global/HostsController.js) to your sails project:

module.exports = {
 
    /**
     * `HostsController.index()`
     * @author      :: Matt McCarty
     * @description :: Returns all supported hosts from the global configuration
     * @method      :: GET
     * @example     :: version#/settings/global/hosts
     */
    index: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.hosts.index(req, res);
    },
 
    /**
     * `HostsController.create()`
     * @author      :: Matt McCarty
     * @description :: Add a new host to the global configuration
     * @method      :: POST
     * @example     :: version#/settings/global/hosts/create
     */
    create: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.hosts.create(req, res);
    },
 
    /**
     * `HostsController.update()`
     * @author      :: Matt McCarty
     * @description :: Update an existing host in the database
     * @method      :: PUT
     * @example     :: version#/settings/global/hosts/update
     */
    update: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.hosts.update(req, res);
    },
 
    /**
     * `HostsController.destroy()`
     * @author      :: Matt McCarty
     * @description :: Deletes an existing host record from the database
     * @method      :: DELETE
     * @example     :: version#/settings/global/hosts/destroy
     */
    destroy: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.hosts.destroy(req, res);
    }
};

2.) Add a groups controller (i.e: api/controllers/V1/Settings/Global/GroupsController.js) to your sails project:

module.exports = {
 
    /**
     * `GroupsController.index()`
     * @author      :: Matt McCarty
     * @description :: Returns all supported groups from the global configuration
     * @method      :: GET
     * @example     :: version#/settings/global/groups
     */
    index: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.groups.index(req, res);
    },
 
    /**
     * `GroupsController.create()`
     * @author      :: Matt McCarty
     * @description :: Add a new group to the global configuration
     * @method      :: POST
     * @example     :: version#/settings/global/hogroupssts/create
     */
    create: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.groups.create(req, res);
    },
 
   /**
     * `GroupsController.update()`
     * @author      :: Matt McCarty
     * @description :: Update an existing group in the database
     * @method      :: PUT
     * @example     :: version#/settings/global/groups/update
     */
    update: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.groups.update(req, res);
    },
 
    /**
     * `GroupsController.destroy()`
     * @author      :: Matt McCarty
     * @description :: Deletes an existing group record from the database
     * @method      :: DELETE
     * @example     :: version#/settings/global/groups/destroy
     */
    destroy: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.groups.destroy(req, res);
    }
};

3.) Add a providers controller (i.e: api/controllers/V1/Settings/Global/ProvidersController.js) to your sails project:

module.exports = {
 
    /**
     * `ProvidersController.index()`
     * @author      :: Matt McCarty
     * @description :: Returns all supported providers from the global configuration
     * @method      :: GET
     * @example     :: version#/settings/global/providers
     */
    index: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.providers.index(req, res);
    },
 
    /**
    * `ProvidersController.defaults()`
    * @author      :: Matt McCarty
    * @description :: Returns a list of the provider default settings
    * @method      :: GET
    * @example     :: version#/settings/global/defaults
    */
    defaults: function (req, res) {
        return sails.controllers.sso.providers.defaults(req, res);
    },
 
    /**
     * `ProvidersController.create()`
     * @author      :: Matt McCarty
     * @description :: Add a new provider to the global configuration
     * @method      :: POST
     * @example     :: version#/settings/global/providers/create
     */
    create: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.providers.create(req, res);
    },
 
    /**
     * `ProvidersController.update()`
     * @author      :: Matt McCarty
     * @description :: Update an existing provider in the database
     * @method      :: PUT
     * @example     :: version#/settings/global/providers/update
     */
    update: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.providers.update(req, res);
    },
 
    /**
     * `ProvidersController.destroy()`
     * @author      :: Matt McCarty
     * @description :: Deletes an existing provider record from the database
     * @method      :: DELETE
     * @example     :: version#/settings/global/providers/destroy
     */
    destroy: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.providers.destroy(req, res);
    }
};

4.) Add a passports controller (i.e: api/controllers/V1/User/Auth/PassportsController.js) to your sails project:

module.exports = {
 
    /**
     * `PassportsController.index()`
     * @author      :: Matt McCarty
     * @description :: Returns all supported pasports from the global configuration
     * @method      :: GET
     * @example     :: version#/user/auth/pasports
     */
    index: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.pasports.index(req, res);
    },
 
    /**
     * `PassportsController.create()`
     * @author      :: Matt McCarty
     * @description :: Add a new passport to the global configuration
     * @method      :: POST
     * @example     :: version#/user/auth/create
     */
    create: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.pasports.create(req, res);
    },
 
    /**
     * `PassportsController.update()`
     * @author      :: Matt McCarty
     * @description :: Update an existing passport in the database
     * @method      :: PUT
     * @example     :: version#/user/auth/update
     */
    update: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.pasports.update(req, res);
    },
 
    /**
     * `PassportsController.destroy()`
     * @author      :: Matt McCarty
     * @description :: Deletes an existing passport record from the database
     * @method      :: DELETE
     * @example     :: version#/user/auth/destroy
     */
    destroy: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.pasports.destroy(req, res);
    }
};

5.) Add a user controller (i.e: api/controllers/V1/UsersController.js) to your sails project:

module.exports = {
 
    /**
     * `UsersController.index()`
     * @author      :: Matt McCarty
     * @description :: Returns user profile page
     * @method      :: GET
     * @example     :: version#/user
     */
    index: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.users.index(req, res);
    },
 
    /**
     * `UsersController.register()`
     * @author      :: Matt McCarty
     * @description :: Creates (registers) a new user
     * @method      :: POST
     * @example     :: version#/user/register
     */
    register: function (req, res) {
        // Defined in sails-hook-sso module
        return sails.controllers.sso.users.register(req, res);
    }
};

6.) Configure your routes in config/routes.js to match the new controllers and actions

7.) Run sails:

sails lift

8.) Make a REST API request to one of the endpoints. For example:

POST   = /v1/settings/global/hosts/create
Values = {
    host    : 'localhost:1337',
    master  : 1,
    children: []
}

to be continued...

Package Sidebar

Install

npm i sails-hook-sso

Weekly Downloads

0

Version

0.0.9

License

GPL-3.0

Last publish

Collaborators

  • mattmccarty