Skip to content

Commit 6aa9fd6

Browse files
authored
Merge pull request #46 from ancamcheachta/master
Updated getters to use lean, fixed saveToken
2 parents bbf45bf + c1be546 commit 6aa9fd6

File tree

1 file changed

+33
-20
lines changed

1 file changed

+33
-20
lines changed

examples/mongodb/model.js

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ var Schema = mongoose.Schema;
1313
mongoose.model('OAuthTokens', new Schema({
1414
accessToken: { type: String },
1515
accessTokenExpiresOn: { type: Date },
16+
client : { type: Object }, // `client` and `user` are required in multiple places, for example `getAccessToken()`
1617
clientId: { type: String },
1718
refreshToken: { type: String },
1819
refreshTokenExpiresOn: { type: Date },
19-
userId: { type: String }
20+
user : { type: Object },
21+
userId: { type: String },
2022
}));
2123

2224
mongoose.model('OAuthClients', new Schema({
@@ -42,56 +44,67 @@ var OAuthUsersModel = mongoose.model('OAuthUsers');
4244
*/
4345

4446
module.exports.getAccessToken = function(bearerToken) {
45-
console.log('in getAccessToken (bearerToken: ' + bearerToken + ')');
46-
47-
return OAuthTokensModel.findOne({ accessToken: bearerToken });
47+
// Adding `.lean()`, as we get a mongoose wrapper object back from `findOne(...)`, and oauth2-server complains.
48+
return OAuthTokensModel.findOne({ accessToken: bearerToken }).lean();
4849
};
4950

5051
/**
5152
* Get client.
5253
*/
5354

5455
module.exports.getClient = function(clientId, clientSecret) {
55-
console.log('in getClient (clientId: ' + clientId + ', clientSecret: ' + clientSecret + ')');
56-
57-
return OAuthClientsModel.findOne({ clientId: clientId, clientSecret: clientSecret });
56+
return OAuthClientsModel.findOne({ clientId: clientId, clientSecret: clientSecret }).lean();
5857
};
5958

6059
/**
6160
* Get refresh token.
6261
*/
6362

6463
module.exports.getRefreshToken = function(refreshToken) {
65-
console.log('in getRefreshToken (refreshToken: ' + refreshToken + ')');
66-
67-
return OAuthTokensModel.findOne({ refreshToken: refreshToken });
64+
return OAuthTokensModel.findOne({ refreshToken: refreshToken }).lean();
6865
};
6966

70-
/*
67+
/**
7168
* Get user.
7269
*/
7370

7471
module.exports.getUser = function(username, password) {
75-
console.log('in getUser (username: ' + username + ', password: ' + password + ')');
76-
77-
return OAuthUsersModel.findOne({ username: username, password: password });
72+
return OAuthUsersModel.findOne({ username: username, password: password }).lean();
7873
};
7974

8075
/**
8176
* Save token.
8277
*/
8378

8479
module.exports.saveToken = function(token, client, user) {
85-
console.log('in saveToken (token: ' + token + ')');
86-
8780
var accessToken = new OAuthTokensModel({
8881
accessToken: token.accessToken,
8982
accessTokenExpiresOn: token.accessTokenExpiresOn,
90-
clientId: client.id,
83+
client : client,
84+
clientId: client.clientId,
9185
refreshToken: token.refreshToken,
9286
refreshTokenExpiresOn: token.refreshTokenExpiresOn,
93-
userId: user.id
87+
user : user,
88+
userId: user._id,
89+
});
90+
// Can't just chain `lean()` to `save()` as we did with `findOne()` elsewhere. Instead we use `Promise` to resolve the data.
91+
return new Promise( function(resolve,reject){
92+
accessToken.save(function(err,data){
93+
if( err ) reject( err );
94+
else resolve( data );
95+
}) ;
96+
}).then(function(saveResult){
97+
// `saveResult` is mongoose wrapper object, not doc itself. Calling `toJSON()` returns the doc.
98+
saveResult = saveResult && typeof saveResult == 'object' ? saveResult.toJSON() : saveResult;
99+
100+
// Unsure what else points to `saveResult` in oauth2-server, making copy to be safe
101+
var data = new Object();
102+
for( var prop in saveResult ) data[prop] = saveResult[prop];
103+
104+
// /oauth-server/lib/models/token-model.js complains if missing `client` and `user`. Creating missing properties.
105+
data.client = data.clientId;
106+
data.user = data.userId;
107+
108+
return data;
94109
});
95-
96-
return accessToken.save();
97110
};

0 commit comments

Comments
 (0)