1
- import { Clerk , verifyToken } from "@clerk/backend" ;
2
- import { APIError , Gateway , Header } from "encore.dev/api" ;
3
- import { authHandler } from "encore.dev/auth" ;
4
- import { secret } from "encore.dev/config" ;
5
- import { AUTHORIZED_PARTIES , DOMAIN } from "./config" ;
1
+ import { createClerkClient , verifyToken } from "@clerk/backend" ;
2
+ import { APIError , Gateway , Header } from "encore.dev/api" ;
3
+ import { authHandler } from "encore.dev/auth" ;
4
+ import { secret } from "encore.dev/config" ;
5
+
6
6
import log from "encore.dev/log" ;
7
+ import { AUTHORIZED_PARTIES } from "./config" ;
7
8
8
9
const clerkSecretKey = secret ( "ClerkSecretKey" ) ;
9
10
10
- const clerkClient = Clerk ( {
11
+ const clerkClient = createClerkClient ( {
11
12
secretKey : clerkSecretKey ( ) ,
12
13
} ) ;
13
14
@@ -21,32 +22,31 @@ interface AuthData {
21
22
emailAddress : string | null ;
22
23
}
23
24
24
- const myAuthHandler = authHandler (
25
- async ( params : AuthParams ) : Promise < AuthData > => {
26
- const token = params . authorization . replace ( 'Bearer ' , '' ) ;
27
-
28
- if ( ! token ) {
29
- throw APIError . unauthenticated ( "no token provided" ) ;
30
- }
31
-
32
- try {
33
- const result = await verifyToken ( token , {
34
- issuer : DOMAIN ,
35
- authorizedParties : AUTHORIZED_PARTIES ,
36
- } ) ;
37
-
38
- const user = await clerkClient . users . getUser ( result . sub ) ;
39
-
40
- return {
41
- userID : user . id ,
42
- imageUrl : user . imageUrl ,
43
- emailAddress : user . emailAddresses [ 0 ] . emailAddress || null ,
44
- } ;
45
- } catch ( e ) {
46
- log . error ( e ) ;
47
- throw APIError . unauthenticated ( "invalid token" , e as Error ) ;
48
- }
25
+ const myAuthHandler = authHandler ( async ( params : AuthParams ) : Promise <
26
+ AuthData
27
+ > => {
28
+ const token = params . authorization . replace ( "Bearer " , "" ) ;
29
+
30
+ if ( ! token ) {
31
+ throw APIError . unauthenticated ( "no token provided" ) ;
49
32
}
50
- ) ;
51
33
52
- export const mygw = new Gateway ( { authHandler : myAuthHandler } ) ;
34
+ try {
35
+ const result = await verifyToken ( token , {
36
+ authorizedParties : AUTHORIZED_PARTIES ,
37
+ } ) ;
38
+
39
+ const user = await clerkClient . users . getUser ( result . sub ) ;
40
+
41
+ return {
42
+ userID : user . id ,
43
+ imageUrl : user . imageUrl ,
44
+ emailAddress : user . emailAddresses [ 0 ] . emailAddress || null ,
45
+ } ;
46
+ } catch ( e ) {
47
+ log . error ( e ) ;
48
+ throw APIError . unauthenticated ( "invalid token" , e as Error ) ;
49
+ }
50
+ } ) ;
51
+
52
+ export const mygw = new Gateway ( { authHandler : myAuthHandler } ) ;
0 commit comments