@@ -42,56 +42,65 @@ var OAuthUsersModel = mongoose.model('OAuthUsers');
4242 */
4343
4444module . 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
5453module . 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
6461module . 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
7469module . 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
8477module . 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