moved UI stuff into the settings area, moved authWithSession to the Auth controller

This commit is contained in:
Nick Gordon
2013-11-15 16:25:09 -08:00
parent e2e7ba15b2
commit 5116a99dce
6 changed files with 60 additions and 39 deletions

View File

@@ -31,6 +31,7 @@ window.habitrpg = angular.module('habitrpg',
.when('/options/groups/guilds', '/options/groups/guilds/public') .when('/options/groups/guilds', '/options/groups/guilds/public')
.when('/options/inventory', '/options/inventory/inventory') .when('/options/inventory', '/options/inventory/inventory')
.when('/options/inventory/stable', '/options/inventory/stable/pets') .when('/options/inventory/stable', '/options/inventory/stable/pets')
.when('/options/settings', '/options/settings/settings')
// redirect states that don't match // redirect states that don't match
.otherwise("/tasks"); .otherwise("/tasks");
@@ -68,10 +69,6 @@ window.habitrpg = angular.module('habitrpg',
url: "/profile", url: "/profile",
templateUrl: "partials/options.profile.profile.html" templateUrl: "partials/options.profile.profile.html"
}) })
.state('options.profile.data', {
url: "/profile/data",
templateUrl: "partials/options.profile.data.html"
})
// Options > Groups // Options > Groups
.state('options.social', { .state('options.social', {
@@ -165,6 +162,18 @@ window.habitrpg = angular.module('habitrpg',
controller: 'SettingsCtrl', controller: 'SettingsCtrl',
templateUrl: "partials/options.settings.html" templateUrl: "partials/options.settings.html"
}) })
.state('options.settings.settings', {
url: "/settings",
templateUrl: "partials/options.settings.settings.html"
})
.state('options.settings.api', {
url: "/api",
templateUrl: "partials/options.settings.api.html"
})
.state('options.settings.export', {
url: "/export",
templateUrl: "partials/options.settings.export.html"
})
// Options > Settings // Options > Settings
.state('options.admin', { .state('options.admin', {

View File

@@ -13,6 +13,7 @@ var api = module.exports;
var NO_TOKEN_OR_UID = { err: "You must include a token and uid (user id) in your request"}; var NO_TOKEN_OR_UID = { err: "You must include a token and uid (user id) in your request"};
var NO_USER_FOUND = {err: "No user found."}; var NO_USER_FOUND = {err: "No user found."};
var NO_SESSION_FOUND = { err: "You must be logged in." };
/* /*
beforeEach auth interceptor beforeEach auth interceptor
@@ -40,6 +41,19 @@ api.auth = function(req, res, next) {
}); });
}; };
api.authWithSession = function(req, res, next) { //[todo] there is probably a more elegant way of doing this...
var uid;
uid = req.session.userId;
if (!(req.session && req.session.userId)) {
return res.json(401, NO_SESSION_FOUND);
}
return User.findOne({_id: uid,}, function(err, user) {
if (err) return res.json(500, {err: err});
if (_.isEmpty(user)) return res.json(401, NO_USER_FOUND);
res.locals.user = user;
return next();
});
};
api.registerUser = function(req, res, next) { api.registerUser = function(req, res, next) {
var confirmPassword, e, email, password, username, _ref; var confirmPassword, e, email, password, username, _ref;
@@ -263,4 +277,4 @@ api.setupPassport = function(router) {
// if (req.isAuthenticated()) { return next(); } // if (req.isAuthenticated()) { return next(); }
// res.redirect('/login') // res.redirect('/login')
// } // }
}; };

View File

@@ -1,6 +1,5 @@
var _ = require('lodash'); var _ = require('lodash');
var csv = require('express-csv'); var csv = require('express-csv');
var User = require('../models/user').model;
var nconf = require('nconf'); var nconf = require('nconf');
var moment = require('moment'); var moment = require('moment');
var dataexport = module.exports; var dataexport = module.exports;
@@ -26,26 +25,3 @@ dataexport.history = function(req, res) {
}); });
return res.csv(output); return res.csv(output);
} }
dataexport.auth = function(req, res, next) { //[todo] there is probably a more elegant way of doing this...
var uid;
uid = req.session.userId;
if (!(req.session && req.session.userId)) {
return res.json(401, "You must be logged in.");
}
return User.findOne({
_id: uid,
}, function(err, user) {
if (err) {
return res.json(500, {
err: err
});
}
if (_.isEmpty(user)) {
return res.json(401, "No user found.");
}
res.locals.user = user;
return next();
});
};

View File

@@ -1,9 +1,10 @@
var express = require('express'); var express = require('express');
var router = new express.Router(); var router = new express.Router();
var dataexport = require('../controllers/dataexport'); var dataexport = require('../controllers/dataexport');
var auth = require('../controllers/auth');
var nconf = require('nconf'); var nconf = require('nconf');
/* Data export */ /* Data export */
router.get('/history.csv',dataexport.auth,dataexport.history); //[todo] encode data output options in the data controller and use these to build routes router.get('/history.csv',auth.authWithSession,dataexport.history); //[todo] encode data output options in the data controller and use these to build routes
module.exports = router; module.exports = router;

View File

@@ -105,9 +105,6 @@ script(id='partials/options.profile.profile.html', type='text/ng-template')
textarea.option-content(style='height:15em;', placeholder='Blurb', ng-model='editingProfile.blurb') textarea.option-content(style='height:15em;', placeholder='Blurb', ng-model='editingProfile.blurb')
include ../shared/formatting-help include ../shared/formatting-help
script(id='partials/options.profile.data.html', type="text/ng-template")
a(href="/export/history.csv") Export History (CSV)
script(id='partials/options.profile.html', type="text/ng-template") script(id='partials/options.profile.html', type="text/ng-template")
ul.nav.nav-tabs ul.nav.nav-tabs
li(ng-class="{ active: $state.includes('options.profile.avatar') }") li(ng-class="{ active: $state.includes('options.profile.avatar') }")
@@ -119,9 +116,6 @@ script(id='partials/options.profile.html', type="text/ng-template")
li(ng-class="{ active: $state.includes('options.profile.profile') }") li(ng-class="{ active: $state.includes('options.profile.profile') }")
a(ui-sref='options.profile.profile') a(ui-sref='options.profile.profile')
| Profile | Profile
li(ng-class="{ active: $state.includes('options.profile.data') }")
a(ui-sref='options.profile.data')
| My Data
.tab-content .tab-content
.tab-pane.active .tab-pane.active

View File

@@ -1,6 +1,22 @@
script(type='text/ng-template', id='partials/options.settings.html') script(id='partials/options.settings.html', type="text/ng-template")
ul.nav.nav-tabs
li(ng-class="{ active: $state.includes('options.settings.settings') }")
a(ui-sref='options.settings.settings')
| Settings
li(ng-class="{ active: $state.includes('options.settings.api') }")
a(ui-sref='options.settings.api')
| API
li(ng-class="{ active: $state.includes('options.settings.export') }")
a(ui-sref='options.settings.export')
| Data Export
.tab-content
.tab-pane.active
div(ui-view)
script(type='text/ng-template', id='partials/options.settings.settings.html')
.row-fluid .row-fluid
.personal-options.span6.border-right .personal-options.span6
h2 Settings h2 Settings
h4 Custom Day Start h4 Custom Day Start
.option-group.option-short .option-group.option-short
@@ -36,6 +52,9 @@ script(type='text/ng-template', id='partials/options.settings.html')
a.btn.btn-danger(ng-click='modals.reset = true', tooltip='Resets your entire account (dangerous).') Reset a.btn.btn-danger(ng-click='modals.reset = true', tooltip='Resets your entire account (dangerous).') Reset
a.btn.btn-danger(ng-click='modals.restore = true', tooltip='Restores attributes to your character.') Restore a.btn.btn-danger(ng-click='modals.restore = true', tooltip='Restores attributes to your character.') Restore
a.btn.btn-danger(ng-click='modals.delete = true', tooltip='Delete your account.') Delete a.btn.btn-danger(ng-click='modals.delete = true', tooltip='Delete your account.') Delete
script(type='text/ng-template', id='partials/options.settings.api.html')
.row.fluid
.span6 .span6
h2 API h2 API
small Copy these for use in third party applications. small Copy these for use in third party applications.
@@ -45,3 +64,11 @@ script(type='text/ng-template', id='partials/options.settings.html')
pre.prettyprint {{user.apiToken}} pre.prettyprint {{user.apiToken}}
h6 QR Code h6 QR Code
img(src='https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=%7Baddress%3A%22https%3A%2F%2Fhabitrpg.com%22%2Cuser%3A%22{{user.id}}%22%2Ckey%3A%22{{user.apiToken}}%22%7D,&choe=UTF-8&chld=L', alt='qrcode') img(src='https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=%7Baddress%3A%22https%3A%2F%2Fhabitrpg.com%22%2Cuser%3A%22{{user.id}}%22%2Ckey%3A%22{{user.apiToken}}%22%7D,&choe=UTF-8&chld=L', alt='qrcode')
script(id='partials/options.settings.export.html', type="text/ng-template")
.row.fluid
.span6
h2 Data Export
small Here are a few options for saving your Habit data.
h4 Habit History
a(href="/export/history.csv") Export History (CSV)