File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -13,9 +13,7 @@ import { ERROR_MESSAGES } from "$lib/stores/errors";
13
13
export const handle : Handle = async ( { event, resolve } ) => {
14
14
const token = event . cookies . get ( COOKIE_NAME ) ;
15
15
16
- event . locals . sessionId = token || crypto . randomUUID ( ) ;
17
-
18
- const user = await collections . users . findOne ( { sessionId : event . locals . sessionId } ) ;
16
+ const user = token ? await collections . users . findOne ( { sessionId : token } ) : null ;
19
17
20
18
if ( user ) {
21
19
event . locals . user = user ;
@@ -33,6 +31,18 @@ export const handle: Handle = async ({ event, resolve }) => {
33
31
} ) ;
34
32
}
35
33
34
+ if ( ! token ) {
35
+ const sessionId = crypto . randomUUID ( ) ;
36
+ if ( await collections . users . findOne ( { sessionId } ) ) {
37
+ return errorResponse ( 500 , "Session ID collision" ) ;
38
+ }
39
+ event . locals . sessionId = sessionId ;
40
+ } else {
41
+ event . locals . sessionId = token ;
42
+ }
43
+
44
+ Object . freeze ( event . locals ) ;
45
+
36
46
// CSRF protection
37
47
const requestContentType = event . request . headers . get ( "content-type" ) ?. split ( ";" ) [ 0 ] ?? "" ;
38
48
/** https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype */
You can’t perform that action at this time.
0 commit comments