mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
sync
This commit is contained in:
@ -1,3 +1,5 @@
|
||||
var log = require('log4node');
|
||||
|
||||
module.exports = function(app, passport) {
|
||||
app.get('/auth', function(req, res, next) {
|
||||
console.dir(req.headers);
|
||||
@ -16,13 +18,15 @@ module.exports = function(app, passport) {
|
||||
var options = {
|
||||
callbackURL: 'http://' + req.headers['x-forwarded-host'] + '/auth/callback'
|
||||
};
|
||||
console.log(options);
|
||||
passport.authenticate('google', options, function(err, user, info) {
|
||||
var redirectUrl = '/';
|
||||
|
||||
if (err) { return next(err); }
|
||||
if (!user) { return res.redirect('/login/error'); }
|
||||
|
||||
log.setPrefix("[%d] %l ");
|
||||
log.info("User Logged In: %s %s", user.name.first, user.name.last);
|
||||
|
||||
if (req.session.redirectUrl) {
|
||||
redirectUrl = req.session.redirectUrl;
|
||||
req.session.redirectUrl = null;
|
||||
@ -43,15 +47,22 @@ module.exports = function(app, passport) {
|
||||
return {
|
||||
requiresUiLogin: function(req, res, next) {
|
||||
if (!req.isAuthenticated()) {
|
||||
// req.session.redirectUrl = req.url;
|
||||
return res.redirect('/login');
|
||||
}
|
||||
|
||||
log.setPrefix(function(level) {
|
||||
return '[' + new Date().toUTCString() + '] ' + level.toUpperCase() + ' ' + req.user.name.first + ' ' + req.user.name.last + ' | ';
|
||||
});
|
||||
next();
|
||||
},
|
||||
requiresApiAccess: function(req, res, next) {
|
||||
if (!req.isAuthenticated()) {
|
||||
return res.send(403);
|
||||
}
|
||||
|
||||
log.setPrefix(function(level) {
|
||||
return '[' + new Date().toUTCString() + '] ' + level.toUpperCase() + ' ' + req.user.name.first + ' ' + req.user.name.last + ' | ';
|
||||
});
|
||||
next();
|
||||
}
|
||||
};
|
||||
|
@ -29,8 +29,11 @@ module.exports = {
|
||||
clientId: '333768673996-8epedo3je5h59n4l97v4dv8nofs7qnee.apps.googleusercontent.com',
|
||||
clientSecret: 'afu9KhKxckWJ3Tk6uxzp9Pg6',
|
||||
callback: 'http://portal.atlanticbiomedical.com/auth/callback',
|
||||
accessToken: 'ya29.AHES6ZT1Sj1vpgidR2I_ksLdlV_VeZUjkitnZ01cP6VRrknjUEVbuw',
|
||||
refreshToken: '1/XQW9P9FNYm6jikTsV8HOIuPAo1APYhwTH5CLhq9263g'
|
||||
// accessToken: 'ya29.AHES6ZT1Sj1vpgidR2I_ksLdlV_VeZUjkitnZ01cP6VRrknjUEVbuw',
|
||||
// refreshToken: '1/XQW9P9FNYm6jikTsV8HOIuPAo1APYhwTH5CLhq9263g'
|
||||
|
||||
accessToken: 'ya29.1.AADtN_Xjt0PK6YVs8q5csiQFXQg2ZDtrVhsH6P4a5zm0mHqhGx0Nnjx4Jk68Gw',
|
||||
refreshToken: '1/_5SkDLYmsi4XNaQyAzld-W5-GEqEqt5byH6VkI-j5QI',
|
||||
},
|
||||
email: {
|
||||
user: 'api@atlanticbiomedical.com',
|
||||
|
72
config/directory.js
Normal file
72
config/directory.js
Normal file
@ -0,0 +1,72 @@
|
||||
var googleapis = require('googleapis'),
|
||||
sprintf = require('sprintf'),
|
||||
OAuth2Client = googleapis.OAuth2Client;
|
||||
|
||||
var apiClient;
|
||||
|
||||
module.exports = function(config) {
|
||||
|
||||
var oauth2Client = new OAuth2Client(
|
||||
config.auth.clientId, config.auth.clientSecret, config.auth.callback);
|
||||
|
||||
oauth2Client.credentials = {
|
||||
access_token: config.auth.accessToken,
|
||||
refresh_token: config.auth.refreshToken
|
||||
};
|
||||
|
||||
function toIsoDate(d) {
|
||||
function pad(n) { return n < 10 ? '0' + n : n }
|
||||
return d.getUTCFullYear()+'-'
|
||||
+ pad(d.getUTCMonth()+1)+'-'
|
||||
+ pad(d.getUTCDate())+'T'
|
||||
+ pad(d.getUTCHours())+':'
|
||||
+ pad(d.getUTCMinutes())+':'
|
||||
+ pad(d.getUTCSeconds())+'Z';
|
||||
}
|
||||
|
||||
return {
|
||||
listUsers: function(callback) {
|
||||
api(function(client, callback) {
|
||||
var params = {
|
||||
domain: 'atlanticbiomedical.com',
|
||||
fields: 'users(name,primaryEmail)',
|
||||
};
|
||||
|
||||
var request = client.admin.users.list();
|
||||
request.params = params;
|
||||
request.withAuthClient(oauth2Client).execute(function(err, result) {
|
||||
callback(err, result);
|
||||
});
|
||||
}, callback);
|
||||
}
|
||||
};
|
||||
|
||||
function api(workorder, callback) {
|
||||
var handler = function(client) {
|
||||
workorder(client, function(err, result) {
|
||||
if (oauth2Client.credentials.access_token != config.auth.accessToken) {
|
||||
console.log("Updating access token");
|
||||
config.auth.accessToken = oauth2Client.credentials.access_token;
|
||||
}
|
||||
|
||||
callback(err, result);
|
||||
});
|
||||
};
|
||||
|
||||
if (apiClient) {
|
||||
console.log("Using cached api client");
|
||||
handler(apiClient);
|
||||
} else {
|
||||
console.log("Getting api client");
|
||||
googleapis.discover('admin', 'directory_v1').execute(function(err, client) {
|
||||
console.log(err);
|
||||
|
||||
if (err) return callback(err);
|
||||
apiClient = client;
|
||||
|
||||
handler(apiClient);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
};
|
@ -16,17 +16,22 @@ module.exports = function(passport, config) {
|
||||
passport.use(new GoogleStrategy({
|
||||
clientID: config.auth.clientId,
|
||||
clientSecret: config.auth.clientSecret,
|
||||
// callbackURL: config.auth.callback
|
||||
// callbackURL: config.auth.callback,
|
||||
passReqToCallback: true
|
||||
},
|
||||
function(accessToken, refreshToken, profile, done) {
|
||||
console.log(profile);
|
||||
console.log(accessToken);
|
||||
console.log(refreshToken);
|
||||
|
||||
function(req, accessToken, refreshToken, profile, done) {
|
||||
profile = profile._json;
|
||||
User.findOne({ email: profile.email.toLowerCase() }, function(err, user) {
|
||||
if (err) { return done(err); }
|
||||
if (!user || !user.hasPermission("system.login")) {
|
||||
|
||||
var source = req.headers['x-forwarded-host'];
|
||||
|
||||
|
||||
if (
|
||||
!user ||
|
||||
(source == 'portal.atlanticbiomedical.com' && !user.hasPermission("system.login")) ||
|
||||
(source == 'n.atlb.co' && !user.hasPermission("system.tags"))
|
||||
) {
|
||||
return done(null, false, { message: "You are not authorized to access this portal." });
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
var log = require('log4node');
|
||||
|
||||
module.exports = function(app, auth, piler, calendar, config) {
|
||||
module.exports = function(app, auth, piler, calendar, directory, config) {
|
||||
|
||||
piler.addCssUrl("//fonts.googleapis.com/css?family=Open+Sans:400,300");
|
||||
piler.addCssFile("/css/biomed.less");
|
||||
@ -30,7 +31,7 @@ module.exports = function(app, auth, piler, calendar, config) {
|
||||
app.post('/api/clients/:client_id', clients.update);
|
||||
app.del('/api/clients/:client_id', clients.destroy);
|
||||
|
||||
var workorders = require('../app/controllers/workorders')(calendar);
|
||||
var workorders = require('../app/controllers/workorders')(config, calendar);
|
||||
app.get('/api/workorders', workorders.index);
|
||||
app.get('/api/workorders/:workorder_id', workorders.get);
|
||||
app.post('/api/workorders', workorders.create);
|
||||
@ -40,8 +41,11 @@ module.exports = function(app, auth, piler, calendar, config) {
|
||||
var schedule = require('../app/controllers/schedule');
|
||||
app.get('/api/schedule', schedule.index);
|
||||
|
||||
var users = require('../app/controllers/users');
|
||||
var users = require('../app/controllers/users')(config, directory);
|
||||
app.get('/api/users', users.index);
|
||||
app.get('/api/users/details', users.details);
|
||||
app.post('/api/users', users.create);
|
||||
app.post('/api/users/:user_id', users.update);
|
||||
|
||||
var account = require('../app/controllers/account');
|
||||
app.get('/api/account', account.profile);
|
||||
|
Reference in New Issue
Block a user