Setup is easy! Add to your package.json and run npm install
.
Pass the module:
-
Your app's express instance
NOTE: Do not call the constructor-function returned by the
require()
until all of your server's general middleware has been declared. -
An options object that will pass options used for Express Persona and our SSO integration.
audience
- The URL of your express app when viewed in a browser. Must include the protocol, hostname, and port.- Example:
http://example.org:80
,https://example.org:443
- Example:
loginURL
- An http address including a user/pass according to thehttp
uri scheme.- Exmaple: -
http://user:pass@webmakerServer.foo
- Exmaple: -
verifyResponse
- A callback used for custom actions needed for individual apps. It is returned:res
- The server response object.data
- Contains information useful to determine app specific actions such as: **email
- The email of the Persona Users **user
- An object containing information about this Webmaker user. **status
- Just general information if things didn't fail.
i.e.
var loginHandle = require( "webmaker-loginapi" )( expressApp, {
loginURL: "http://admin:roflcoptor@login.wm.org",
audience: "http://example.org:443"
});
Instantiating this module creates the GET /user/:id
route in the parent app for use during SSO integration. It exposes the Webmaker username associated with valid persona credentials as req.session.username
.
The route will return { status: "okay", user: user }
when successful, and { status: "failure", reason: "error message" }
when not.
The module returns an object with three methods:
loginHandle.getUserById ( id, callback )
...which retrieves the user model for the passed id
, passing the callback the parameters ( errorString, userObject )
and
loginHandle.getUserByEmail ( email, callback )
...which retrieves the user model for the passed email
, passing the callback the parameters ( errorString, userObject )
and
loginHandle.getUserByUsername ( username, callback )
...which retrieves the user model for the passed username
, passing the callback the parameters ( errorString, userObject )
and
Ensure the grunt
and mocha
npm modules are installed globally, then run
grunt
mocha