@@ -31,7 +31,7 @@ function serializeUser(aUser) {
31
31
return userObj ;
32
32
}
33
33
34
- // Add a new session id to the user model
34
+ // Add a single new session id to the user model
35
35
exports . add = function ( aReq , aUser , aCallback ) {
36
36
var store = aReq . sessionStore ;
37
37
@@ -62,7 +62,26 @@ exports.add = function (aReq, aUser, aCallback) {
62
62
}
63
63
} ;
64
64
65
- // Remove a session id from the user model **and** the session store
65
+ // Extend a single session
66
+ exports . extend = function ( aReq , aUser , aCallback ) {
67
+ if ( ! aUser ) {
68
+ aCallback ( 'No User' ) ;
69
+ return ;
70
+ }
71
+
72
+ if ( ! aReq . session . cookie . expires ) {
73
+ aCallback ( 'Already extended' ) ;
74
+ return ;
75
+ }
76
+
77
+ // NOTE: Currently allow on any session with
78
+ // no additional User restrictions yet
79
+
80
+ aReq . session . cookie . expires = false ;
81
+ aReq . session . save ( aCallback ) ;
82
+ } ;
83
+
84
+ // Remove a single session id from the user model **and** the session store
66
85
exports . remove = function ( aReq , aUser , aCallback ) {
67
86
var pos = aUser && aUser . sessionIds ?
68
87
aUser . sessionIds . indexOf ( aReq . sessionID ) : - 1 ;
@@ -86,13 +105,17 @@ exports.update = function (aReq, aUser, aCallback) {
86
105
var store = aReq . sessionStore ;
87
106
var userObj = aUser ? serializeUser ( aUser ) : null ;
88
107
89
- if ( ! aUser || ! aUser . sessionIds ) { return aCallback ( 'No sessions' , null ) ; }
108
+ if ( ! aUser || ! aUser . sessionIds ) {
109
+ aCallback ( 'No sessions' , null ) ;
110
+ return ;
111
+ }
90
112
91
113
async . each ( aUser . sessionIds , function ( aId , aCb ) {
92
114
store . get ( aId , function ( aErr , aSess ) {
93
115
// Invalid session, will be removed on login
94
116
if ( aErr || ! aSess ) {
95
- return aCb ( null ) ;
117
+ aCb ( null ) ;
118
+ return ;
96
119
}
97
120
98
121
aSess . user = userObj ;
@@ -113,7 +136,10 @@ exports.destroy = function (aReq, aUser, aCallback) {
113
136
}
114
137
} ;
115
138
116
- if ( ! aUser || ! aUser . sessionIds ) { return aCallback ( 'No sessions' , null ) ; }
139
+ if ( ! aUser || ! aUser . sessionIds ) {
140
+ aCallback ( 'No sessions' , null ) ;
141
+ return ;
142
+ }
117
143
118
144
async . each ( aUser . sessionIds , function ( aId , aCb ) {
119
145
store . set ( aId , emptySess , aCb ) ;
0 commit comments