Skip to content

Commit 5f98bd1

Browse files
committed
Updated getters to use lean, fixed saveToken
1 parent 67df3ee commit 5f98bd1

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

examples/mongodb/model.js

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,56 +42,65 @@ var OAuthUsersModel = mongoose.model('OAuthUsers');
4242
*/
4343

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

5049
/**
5150
* Get client.
5251
*/
5352

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

6057
/**
6158
* Get refresh token.
6259
*/
6360

6461
module.exports.getRefreshToken = function(refreshToken) {
65-
console.log('in getRefreshToken (refreshToken: ' + refreshToken + ')');
66-
67-
return OAuthTokensModel.findOne({ refreshToken: refreshToken });
62+
return OAuthTokensModel.findOne({ refreshToken: refreshToken }).lean();
6863
};
6964

70-
/*
65+
/**
7166
* Get user.
7267
*/
7368

7469
module.exports.getUser = function(username, password) {
75-
console.log('in getUser (username: ' + username + ', password: ' + password + ')');
76-
77-
return OAuthUsersModel.findOne({ username: username, password: password });
70+
return OAuthUsersModel.findOne({ username: username, password: password }).lean();
7871
};
7972

8073
/**
8174
* Save token.
8275
*/
8376

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

0 commit comments

Comments
 (0)