0.0.14 • Published 7 years ago

node-udb2 v0.0.14

Weekly downloads
2
License
ISC
Repository
github
Last release
7 years ago

Node Client for UDB2

Usage

let session = require( 'express-session' );
let passport = require('passport');
let LocalStrategy = require('passport-local').Strategy;

let app = express();
let udb = require( 'node-udb2' )( app );
// the config passed in is used as request defaults.  baseUrl
// is required, but you may add anything else you need as defaults
// to be sent on every request, like auth headers, etc.
udb.initialize({
  baseUrl: config.udb.baseUrl
});

// if using kong and jwt token:
// udb.initialize({
//   baseUrl: config.udb.baseUrl,
//   auth: {
//     bearer: "JWT-TOKEN"
//   }
// });

app.use( session( config.session ) );

// passport
app.use(passport.initialize());
app.use(passport.session());

// The serializer/deserializer
passport.serializeUser( udb.defaultUserSerializer );
passport.deserializeUser( udb.defaultUserDeserializer );
passport.use( "local", new LocalStrategy(
  { usernameField: 'email', passwordField: 'password' },
  udb.defaultUserAuthenticator ));

// Middleware
function authenticated( req, res, next ) {
  if ( req.isAuthenticated() ) { return next(); }
  var realm = req.headers['realm' ] || 'local';
  passport.authenticate( realm, function( err, user, info ) {
    // if err, use err.message
    if ( err ) return res.status( 401 ).send( err.message );
    // if !user, use info.message
    if ( ! user ) return res.status( 401 ).send( info.message );
    // IMPORTANT!  Adjust the session expires to match the
    // values used in udb
    if ( user.session && user.session.expire ) {
      req.session.cookie.expires = new Date( Date.now() + (user.session.expire * 1000) );
      delete user.session;
    }
    req.logIn( user, function( err ) {
      // if err, use err.message
      next();
    });
  })( req, res, next );
}

app.post( '/endpoint', authenticated, udb.requestorHas( ["super-admin","admin"] ), function( req, res, next ) {
  if ( udb.userHas( req.user, "admin" ) ) { ... }
  udb.request({
    uri: "/db/accounts/" + req.user.account.id + "/users",
    method: "GET",
    qs: udb.filter({ where: { status: "LOCKED" } })
  }, function( err, users ) {
    if ( err ) return next( err );
    res.json( users );
  });
});
0.0.14

7 years ago

0.0.13

7 years ago

0.0.12

7 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago