Skip to content
This repository was archived by the owner on Feb 26, 2020. It is now read-only.

Commit 5f58c39

Browse files
committed
Added correct user caching
Added owner for REST API
1 parent 152a071 commit 5f58c39

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

node-server/server.js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
// array to hold logged in users
4545
var users = [];
46+
var owner = null;
4647

4748
// Our logger
4849
var log = bunyan.createLogger({name: 'Windows Azure Active Directory Tutorial'});
@@ -104,7 +105,7 @@ function createTask(req, res, next) {
104105
return;
105106
}
106107

107-
_task.owner = req.params.owner;
108+
_task.owner = owner;
108109
_task.task = req.params.task;
109110
_task.date = new Date();
110111

@@ -127,13 +128,14 @@ function createTask(req, res, next) {
127128

128129
function removeTask(req, res, next) {
129130

130-
Task.remove( { task:req.params.task }, function (err) {
131+
Task.remove( { task:req.params.task, owner:owner }, function (err) {
131132
if (err) {
132133
req.log.warn(err,
133134
'removeTask: unable to delete %s',
134135
req.params.task);
135136
next(err);
136137
} else {
138+
log.info('Deleted task:', req.params.task);
137139
res.send(204);
138140
next();
139141
}
@@ -153,10 +155,10 @@ function removeAll(req, res, next) {
153155

154156
function getTask(req, res, next) {
155157

156-
log.info('getTask was called');
157-
Task.find(req.params.owner, function (err, data) {
158+
log.info('getTask was called for: ', owner);
159+
Task.find(owner, function (err, data) {
158160
if (err) {
159-
req.log.warn(err, 'get: unable to read %s', req.params.owner);
161+
req.log.warn(err, 'get: unable to read %s', owner);
160162
next(err);
161163
return;
162164
}
@@ -168,17 +170,17 @@ function getTask(req, res, next) {
168170
}
169171

170172
/// Simple returns the list of TODOs that were loaded.
171-
173+
172174
function listTasks(req, res, next) {
173175
// Resitify currently has a bug which doesn't allow you to set default headers
174176
// This headers comply with CORS and allow us to mongodbServer our response to any origin
175177

176178
res.header("Access-Control-Allow-Origin", "*");
177179
res.header("Access-Control-Allow-Headers", "X-Requested-With");
178180

179-
log.info("listTasks was called");
181+
log.info("listTasks was called for: ", owner);
180182

181-
Task.find().limit(20).sort('date').exec(function (err,data) {
183+
Task.find(owner).limit(20).sort('date').exec(function (err,data) {
182184

183185
if (err)
184186
return next(err);
@@ -291,7 +293,7 @@ var server = restify.createServer({
291293
/**
292294
/*
293295
/* Calling the OIDCBearerStrategy and managing users
294-
/*
296+
/*
295297
/* Passport pattern provides the need to manage users and info tokens
296298
/* with a FindorCreate() method that must be provided by the implementor.
297299
/* Here we just autoregister any user and implement a FindById().
@@ -301,7 +303,8 @@ var server = restify.createServer({
301303
var findById = function (id, fn) {
302304
for (var i = 0, len = users.length; i < len; i++) {
303305
var user = users[i];
304-
if (user.id === id) {
306+
log.info('Got user: ',user);
307+
if (user.sub === id) {
305308
return fn(null, user);
306309
}
307310
}
@@ -315,13 +318,15 @@ var server = restify.createServer({
315318
log.info(token, 'was the token retreived');
316319
findById(token.sub, function (err, user) {
317320
if (err) { return done(err); }
318-
319321
if (!user) {
320322
// "Auto-registration"
321323
log.info('User was added automatically as they were new. Their sub is: ', token.sub)
322324
users.push(token);
325+
log.info(users);
326+
owner = token.sub;
323327
return done(null, token);
324328
}
329+
owner = token.sub;
325330
return done(null, user, token);
326331
});
327332
}
@@ -334,7 +339,7 @@ var server = restify.createServer({
334339
/**
335340
/*
336341
/* Each of these handlers are protected by our OIDCBearerStrategy by invoking 'oidc-bearer'
337-
/* in the pasport.authenticate() method. We set 'session: false' as REST is stateless and
342+
/* in the pasport.authenticate() method. We set 'session: false' as REST is stateless and
338343
/* we don't need to maintain session state. You can experiement removing API protection
339344
/* by removing the passport.authenticate() method like so:
340345
/*

0 commit comments

Comments
 (0)