1
1
import { createCheckAuthorization } from '@clerk/shared/authorization' ;
2
+ import { __experimental_JWTPayloadToAuthObjectProperties } from '@clerk/shared/jwtPayloadParser' ;
2
3
import type {
3
- ActClaim ,
4
4
CheckAuthorizationFromSessionClaims ,
5
5
JwtPayload ,
6
- OrganizationCustomPermissionKey ,
7
- OrganizationCustomRoleKey ,
8
6
ServerGetToken ,
9
7
ServerGetTokenOptions ,
10
- SessionStatusClaim ,
8
+ SharedSignedInAuthObjectProperties ,
11
9
} from '@clerk/types' ;
12
10
13
11
import type { CreateBackendApiOptions } from '../api' ;
@@ -27,28 +25,7 @@ export type SignedInAuthObjectOptions = CreateBackendApiOptions & {
27
25
/**
28
26
* @internal
29
27
*/
30
- type SignedInAuthObjectProperties = {
31
- sessionClaims : JwtPayload ;
32
- sessionId : string ;
33
- sessionStatus : SessionStatusClaim | null ;
34
- actor : ActClaim | undefined ;
35
- userId : string ;
36
- orgId : string | undefined ;
37
- orgRole : OrganizationCustomRoleKey | undefined ;
38
- orgSlug : string | undefined ;
39
- orgPermissions : OrganizationCustomPermissionKey [ ] | undefined ;
40
- /**
41
- * Factor Verification Age
42
- * Each item represents the minutes that have passed since the last time a first or second factor were verified.
43
- * [fistFactorAge, secondFactorAge]
44
- */
45
- factorVerificationAge : [ firstFactorAge : number , secondFactorAge : number ] | null ;
46
- } ;
47
-
48
- /**
49
- * @internal
50
- */
51
- export type SignedInAuthObject = SignedInAuthObjectProperties & {
28
+ export type SignedInAuthObject = SharedSignedInAuthObjectProperties & {
52
29
getToken : ServerGetToken ;
53
30
has : CheckAuthorizationFromSessionClaims ;
54
31
debug : AuthObjectDebug ;
@@ -92,31 +69,6 @@ const createDebug = (data: AuthObjectDebugData | undefined) => {
92
69
} ;
93
70
} ;
94
71
95
- const generateSignedInAuthObjectProperties = ( claims : JwtPayload ) : SignedInAuthObjectProperties => {
96
- // fva can be undefined for instances that have not opt-in
97
- const factorVerificationAge = claims . fva ?? null ;
98
-
99
- // sts can be undefined for instances that have not opt-in
100
- const sessionStatus = claims . sts ?? null ;
101
-
102
- // TODO(jwt-v2): replace this when the new claim for org permissions is added, this will not break
103
- // anything since the JWT v2 is not yet available
104
- const orgPermissions = claims . org_permissions ;
105
-
106
- return {
107
- sessionClaims : claims ,
108
- sessionId : claims . sid ,
109
- sessionStatus,
110
- actor : claims . act ,
111
- userId : claims . sub ,
112
- orgId : claims . org_id ,
113
- orgRole : claims . org_role ,
114
- orgSlug : claims . org_slug ,
115
- orgPermissions,
116
- factorVerificationAge,
117
- } ;
118
- } ;
119
-
120
72
/**
121
73
* @internal
122
74
*/
@@ -126,14 +78,13 @@ export function signedInAuthObject(
126
78
sessionClaims : JwtPayload ,
127
79
) : SignedInAuthObject {
128
80
const { actor, sessionId, sessionStatus, userId, orgId, orgRole, orgSlug, orgPermissions, factorVerificationAge } =
129
- generateSignedInAuthObjectProperties ( sessionClaims ) ;
81
+ __experimental_JWTPayloadToAuthObjectProperties ( sessionClaims ) ;
130
82
const apiClient = createBackendApiClient ( authenticateContext ) ;
131
83
const getToken = createGetToken ( {
132
84
sessionId,
133
85
sessionToken,
134
86
fetcher : async ( ...args ) => ( await apiClient . sessions . getToken ( ...args ) ) . jwt ,
135
87
} ) ;
136
-
137
88
return {
138
89
actor,
139
90
sessionClaims,
0 commit comments