Skip to content

Commit d27f613

Browse files
fixed a session management bug by updating user authentication token handling and adding runtime context values for user ID and auth token
1 parent d4c1262 commit d27f613

3 files changed

Lines changed: 20 additions & 6 deletions

File tree

source/ShowScenes.bs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,12 @@ function LoginFlow()
120120
if myToken <> invalid
121121
' check if token is valid
122122
session.user.Update("authToken", myToken)
123+
session.setRuntimeRequestContextValue("moonfin.userId", m.global.session.user.id)
124+
session.setRuntimeRequestContextValue("moonfin.authToken", myToken)
123125
currentUser = AboutMe()
124126
if currentUser = invalid
127+
session.setRuntimeRequestContextValue("moonfin.userId", invalid)
128+
session.setRuntimeRequestContextValue("moonfin.authToken", invalid)
125129
unset_user_setting("token")
126130
unset_user_setting("username")
127131
else
@@ -155,9 +159,13 @@ function LoginFlow()
155159
if isValid(myAuthToken) and isValid(myUsername)
156160
session.user.Update("authToken", myAuthToken)
157161
session.user.Update("name", myUsername)
162+
session.setRuntimeRequestContextValue("moonfin.userId", activeUser)
163+
session.setRuntimeRequestContextValue("moonfin.authToken", myAuthToken)
158164

159165
currentUser = AboutMe()
160166
if currentUser = invalid
167+
session.setRuntimeRequestContextValue("moonfin.userId", invalid)
168+
session.setRuntimeRequestContextValue("moonfin.authToken", invalid)
161169
' Token invalid - clear cached data and show sign-in screen
162170
unset_user_setting("token")
163171
unset_user_setting("username")

source/api/baserequest.bs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,18 @@ function getAuthTokenFromRegistry() as dynamic
275275
end if
276276

277277
activeUserId = getActiveUserIdFromRegistry()
278-
if not isValidAndNotEmpty(activeUserId)
279-
return invalid
278+
if isValidAndNotEmpty(activeUserId)
279+
authToken = getRegistryValue(activeUserId, "token")
280+
if isValidAndNotEmpty(authToken)
281+
return authToken
282+
end if
280283
end if
281284

282-
authToken = getRegistryValue(activeUserId, "token")
283-
if isValidAndNotEmpty(authToken)
284-
return authToken
285+
if isValid(m) and isChainValid(m, "global.session.user.authToken")
286+
authToken = chainLookupReturn(m, "global.session.user.authToken", invalid)
287+
if isValidAndNotEmpty(authToken)
288+
return authToken
289+
end if
285290
end if
286291

287292
return invalid

source/utils/session.bs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ namespace session
133133
if userData = invalid or userData.id = invalid then return
134134

135135
tmpSession = m.global.session
136-
oldUserSettings = tmpSession.user.settings
136+
oldUserSettings = {}
137137
if userData.json = invalid
138138
myAuthToken = tmpSession.user.authToken
139139
tmpSession.AddReplace("user", userData)
@@ -173,6 +173,7 @@ namespace session
173173
end if
174174

175175
session.user.Update("settings", tmpSettingArray)
176+
session.user.settings.SaveDefaults()
176177

177178
session.setRuntimeRequestContextValue("moonfin.userId", tmpSession.user.id)
178179
session.setRuntimeRequestContextValue("moonfin.authToken", tmpSession.user.authToken)

0 commit comments

Comments
 (0)