@@ -5,25 +5,33 @@ import { env } from "../../utils/env";
5
5
export const withCors = async ( server : FastifyInstance ) => {
6
6
const originArray = env . ACCESS_CONTROL_ALLOW_ORIGIN . split ( "," ) as string [ ] ;
7
7
await server . register ( fastifyCors , {
8
- origin : originArray . map ( ( data ) => {
9
- if ( data . startsWith ( "/" ) && data . endsWith ( "/" ) ) {
10
- return new RegExp ( data . slice ( 1 , - 1 ) ) ;
11
- }
8
+ origin : originArray . map ( sanitizeOrigin ) ,
9
+ credentials : true ,
10
+ } ) ;
11
+ } ;
12
12
13
- if ( data . startsWith ( "*." ) ) {
14
- const regex = data . replace ( "*." , ".*." ) ;
15
- return new RegExp ( regex ) ;
16
- }
13
+ export const sanitizeOrigin = ( data : string ) : string | RegExp => {
14
+ if ( data . startsWith ( "/" ) && data . endsWith ( "/" ) ) {
15
+ return new RegExp ( data . slice ( 1 , - 1 ) ) ;
16
+ }
17
17
18
- if ( data . includes ( "thirdweb-preview.com" ) ) {
19
- return new RegExp ( / ^ h t t p s ? : \/ \/ .* \. t h i r d w e b - p r e v i e w \. c o m $ / ) ;
20
- }
21
- if ( data . includes ( "thirdweb-dev.com" ) ) {
22
- return new RegExp ( / ^ h t t p s ? : \/ \/ .* \. t h i r d w e b - d e v \. c o m $ / ) ;
23
- }
18
+ if ( data . startsWith ( "*." ) ) {
19
+ const regex = data . replace ( "*." , ".*." ) ;
20
+ return new RegExp ( regex ) ;
21
+ }
24
22
25
- return data ;
26
- } ) ,
27
- credentials : true ,
28
- } ) ;
23
+ if ( data . includes ( "thirdweb-preview.com" ) ) {
24
+ return new RegExp ( / ^ h t t p s ? : \/ \/ .* \. t h i r d w e b - p r e v i e w \. c o m $ / ) ;
25
+ }
26
+ if ( data . includes ( "thirdweb-dev.com" ) ) {
27
+ return new RegExp ( / ^ h t t p s ? : \/ \/ .* \. t h i r d w e b - d e v \. c o m $ / ) ;
28
+ }
29
+
30
+ // Remove trailing slashes.
31
+ // The origin header does not include a trailing slash.
32
+ if ( data . endsWith ( "/" ) ) {
33
+ return data . slice ( 0 , - 1 ) ;
34
+ }
35
+
36
+ return data ;
29
37
} ;
0 commit comments