app.post('/login', routes.login);
app.get('/login/scope', routes.scopeForm);
app.post('/login/scopeSubmit', routes.scope);
+app.get('/logout', routes.logout);
app.get('/:org/logout', routes.logout);
app.get('/:org/app', routes.app);
}
return versionSize;
};
+
/**
- @name Extensions
- @class Extensions
- Returns a list of extensions associated with an organization.
+ Figures out what extensions the user is entitled to. Queries to determine
+ client code UUIDs for core and those extensions. Sends on to the app view
+ to render.
*/
exports.serveApp = function (req, res) {
if (!req.session.passport.user) {
return;
}
- var userCollection = new SYS.UserCollection(),
+ var user = new SYS.User(),
fetchError = function (err) {
X.log("Extension fetch error", err);
res.send({isError: true, message: "Error fetching extensions"});
},
- fetchSuccess = function (collection, result) {
+ fetchSuccess = function (model, result) {
var sendExtensions = function (res, extensions) {
var uuids = _.map(extensions, function (ext) {
var sortedModels = _.sortBy(ext.codeInfo, function (codeInfo) {
return sortedModels[0].uuid;
});
getCoreUuid('js', req.session.passport.user.organization, function (err, jsUuid) {
- // TODO: handle error
+ if (err) {
+ res.send({isError: true, error: err});
+ return;
+ }
getCoreUuid('css', req.session.passport.user.organization, function (err, cssUuid) {
- // TODO: handle error
+ if (err) {
+ res.send({isError: true, error: err});
+ return;
+ }
res.render('app', {
org: req.session.passport.user.organization,
coreJs: jsUuid,
}
});
};
- var user = _.find(collection.models, function (obj) {
- return obj.get("username") === req.session.passport.user.username;
- });
var extensions = _.map(user.get("grantedExtensions"), function (ext) {
return ext.extension;
});
}
};
- // Fetch under the authority of admin
- // or else most users would not be able to load their own extensions.
- // TODO: just fetch the model instead of the whole collection
- userCollection.fetch({
+ user.fetch({
+ id: req.session.passport.user.username,
success: fetchSuccess,
error: fetchError,
username: X.options.databaseServer.user,
exports.login = [
//passport.authenticate('local', { successReturnToOrRedirect: '/login/scope', failureRedirect: '/', failureFlash: 'Invalid username or password.' }),
passport.authenticate('local', { failureRedirect: '/?login=fail' }),
- function (/** @lends Auth# */req, res, next) {
+ function (req, res, next) {
if (req && req.session && !req.session.oauth2 && req.session.passport && req.session.passport.user && req.session.passport.user.organization) {
res.redirect("/" + req.session.passport.user.organization + '/app');