@@ -41,30 +41,35 @@ module.exports = function (_config) {
4141 connect ( req , res )
4242 } )
4343
44- var transport = ( provider , res , session ) => ( data ) => {
44+ var transport = ( provider , req , res , session ) => ( data ) => {
4545 if ( ! provider . callback ) {
4646 res . end ( qs . stringify ( data ) )
4747 }
4848 else if ( ! provider . transport || provider . transport === 'querystring' ) {
49- res . redirect ( `${ provider . callback } ?${ qs . stringify ( data ) } ` )
49+ redirect ( req , res , `${ provider . callback } ?${ qs . stringify ( data ) } ` )
5050 }
5151 else if ( provider . transport === 'session' ) {
5252 session . response = data
53- res . redirect ( provider . callback )
53+ redirect ( req , res , provider . callback )
5454 }
5555 }
5656
57+ var redirect = ( req , res , url ) =>
58+ typeof req . session . save === 'function'
59+ ? req . session . save ( ( ) => res . redirect ( url ) )
60+ : res . redirect ( url )
61+
5762 function connect ( req , res ) {
5863 var session = req . session . grant
5964 var provider = config . provider ( app . config , session )
60- var response = transport ( provider , res , session )
65+ var response = transport ( provider , req , res , session )
6166
6267 if ( provider . oauth === 1 ) {
6368 oauth1 . request ( provider )
6469 . then ( ( { body} ) => {
6570 session . request = body
6671 oauth1 . authorize ( provider , body )
67- . then ( ( url ) => res . redirect ( url ) )
72+ . then ( ( url ) => redirect ( req , res , url ) )
6873 . catch ( response )
6974 } )
7075 . catch ( response )
@@ -74,7 +79,7 @@ module.exports = function (_config) {
7479 session . state = provider . state
7580 session . nonce = provider . nonce
7681 oauth2 . authorize ( provider )
77- . then ( ( url ) => res . redirect ( url ) )
82+ . then ( ( url ) => redirect ( req , res , url ) )
7883 . catch ( response )
7984 }
8085
@@ -86,7 +91,7 @@ module.exports = function (_config) {
8691 function callback ( req , res ) {
8792 var session = req . session . grant || { }
8893 var provider = config . provider ( app . config , session )
89- var response = transport ( provider , res , session )
94+ var response = transport ( provider , req , res , session )
9095
9196 if ( provider . oauth === 1 ) {
9297 oauth1 . access ( provider , session . request , req . query )
0 commit comments