- Timestamp:
- 07/01/13 03:11:23 (12 years ago)
- Location:
- Dev/trunk/src/server
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk/src/server/app.js
r467 r470 43 43 app.use(express.favicon()); 44 44 45 // cookies and session 46 app.use('/api/login',express.bodyParser()); 45 47 app.use(express.cookieParser()); 46 app.use(express.bodyParser());47 48 app.use(express.session({ secret: "quasi experimental design" })); 48 49 49 // initializepassport50 // passport 50 51 app.use(passport.initialize()); 51 52 app.use(passport.session()); 53 function ensureAuthenticated(req,res,next){ 54 if (!req.user) { 55 return res.send(401,{error:"Login before accessing API."}); 56 } else { 57 return next(); 58 } 59 } 60 function returnUser(req,res) { 61 res.send(200, req.user); 62 } 52 63 53 64 // static resources … … 62 73 }); 63 74 64 65 // url to login (might work on others as well?) 66 // you should then have a session to work with 67 // should return a user info object 68 function returnUser(req,res) { 69 res.send(200, req.user); 70 } 75 76 // post to this url to login 71 77 app.post( 72 78 '/api/login', … … 74 80 returnUser); 75 81 76 // ensure we're authenticated on API calls 77 function ensureAuthenticated(req,res,next){ 78 if (!req.user) { 79 return res.send(401,{error:"Login before accessing API."}); 80 } else { 81 return next(); 82 } 83 } 84 82 // return the info for the current logged in user 85 83 app.get( 86 84 '/api/login', … … 88 86 returnUser); 89 87 88 // explicitly logout this user 90 89 app.post( 91 90 '/api/logout', … … 96 95 }); 97 96 97 // data is proxied to couch 98 app.use('/api/data', ensureAuthenticated); 99 app.use('/api/data', proxy(settings.couchDbURL)); 100 101 // generate CSV download of responses 98 102 app.get( 99 103 '/api/surveyRuns/:id/responses.csv', … … 109 113 }); 110 114 111 // forward to couch112 app.use('/api/data', ensureAuthenticated);113 app.use('/api/data', proxy(settings.couchDbURL));114 115 115 return app; 116 116 -
Dev/trunk/src/server/config/config-couchdb.js
r468 r470 66 66 designDocs = stringifyFunctions(designDocs); 67 67 return q.all(_.map(designDocs, function(doc,docUrl){ 68 var configAction = doc.__configAction ;68 var configAction = doc.__configAction || "replace"; 69 69 delete doc.__configAction; 70 70 switch (configAction) { 71 72 71 case "ignore": 72 console.log(docUrl+" ignored."); 73 73 break; 74 75 76 77 78 79 80 81 82 83 break;84 c ase "replace":85 default:86 console.log(docUrl+" replacing.");87 return dbRequest('GET',docUrl)88 .then(function(oldDoc){89 _.extend(doc,_.pick(oldDoc,'_id','_rev'));90 91 },function(){92 return dbRequest('PUT',docUrl,doc);93 });74 case "update": 75 console.log(docUrl+" updating."); 76 return dbRequest('GET',docUrl) 77 .then(function(oldDoc){ 78 _.extend(oldDoc,doc); 79 return dbRequest('PUT',docUrl,oldDoc); 80 },function(){ 81 return dbRequest('PUT',docUrl,doc); 82 }); 83 case "replace": 84 console.log(docUrl+" replacing."); 85 return dbRequest('GET',docUrl) 86 .then(function(oldDoc){ 87 _.extend(doc,_.pick(oldDoc,'_id','_rev')); 88 return dbRequest('PUT',docUrl,doc); 89 },function(){ 90 return dbRequest('PUT',docUrl,doc); 91 }); 92 default: 93 console.warn("Unknown action",configAction); 94 94 break; 95 95 } -
Dev/trunk/src/server/util/q-request.js
r468 r470 9 9 dfd.response = q.defer(); 10 10 11 options = options 12 ? _.clone(options) 13 : {}; 11 options = options ? _.clone(options) : {}; 14 12 options.uri = url || options.uri; 15 13 -
Dev/trunk/src/server/util/simple-http-proxy.js
r466 r470 3 3 * Module dependencies 4 4 */ 5 var url = require('url') 6 , join = require('path').join7 ,protocols = {5 var url = require('url'), 6 join = require('path').join, 7 protocols = { 8 8 http: require('http'), 9 9 https: require('https')
Note: See TracChangeset
for help on using the changeset viewer.