0.0.9 • Published 9 years ago

sails-hook-sso v0.0.9

Weekly downloads
3
License
GPL-3.0
Repository
github
Last release
9 years ago

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

0.0.9

9 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago