JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q37495F
  • License GPL-3.0

Single Sign-on for sails.js using passport and passport-sso

Package Exports

  • sails-hook-sso

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sails-hook-sso) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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