11package main
22
33import (
4- "context"
5- "log"
6-
7- "github.com/authorizerdev/authorizer/server/constants"
84 "github.com/authorizerdev/authorizer/server/db"
95 "github.com/authorizerdev/authorizer/server/env"
106 "github.com/authorizerdev/authorizer/server/handlers"
7+ "github.com/authorizerdev/authorizer/server/middlewares"
118 "github.com/authorizerdev/authorizer/server/oauth"
129 "github.com/authorizerdev/authorizer/server/session"
1310 "github.com/authorizerdev/authorizer/server/utils"
1411 "github.com/gin-contrib/location"
1512 "github.com/gin-gonic/gin"
1613)
1714
18- func GinContextToContextMiddleware () gin.HandlerFunc {
19- return func (c * gin.Context ) {
20- if constants .AUTHORIZER_URL == "" {
21- url := location .Get (c )
22- constants .AUTHORIZER_URL = url .Scheme + "://" + c .Request .Host
23- log .Println ("=> authorizer url:" , constants .AUTHORIZER_URL )
24- }
25- ctx := context .WithValue (c .Request .Context (), "GinContextKey" , c )
26- c .Request = c .Request .WithContext (ctx )
27- c .Next ()
28- }
29- }
30-
31- // TODO use allowed origins for cors origin
32- // TODO throw error if url is not allowed
33- func CORSMiddleware () gin.HandlerFunc {
34- return func (c * gin.Context ) {
35- origin := c .Request .Header .Get ("Origin" )
36- constants .APP_URL = origin
37- c .Writer .Header ().Set ("Access-Control-Allow-Origin" , origin )
38- c .Writer .Header ().Set ("Access-Control-Allow-Credentials" , "true" )
39- c .Writer .Header ().Set ("Access-Control-Allow-Headers" , "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With" )
40- c .Writer .Header ().Set ("Access-Control-Allow-Methods" , "POST, OPTIONS, GET, PUT" )
41-
42- if c .Request .Method == "OPTIONS" {
43- c .AbortWithStatus (204 )
44- return
45- }
46-
47- c .Next ()
48- }
49- }
50-
5115func main () {
5216 env .InitEnv ()
5317 db .InitDB ()
@@ -57,8 +21,8 @@ func main() {
5721
5822 r := gin .Default ()
5923 r .Use (location .Default ())
60- r .Use (GinContextToContextMiddleware ())
61- r .Use (CORSMiddleware ())
24+ r .Use (middlewares . GinContextToContextMiddleware ())
25+ r .Use (middlewares . CORSMiddleware ())
6226
6327 r .GET ("/" , handlers .PlaygroundHandler ())
6428 r .POST ("/graphql" , handlers .GraphqlHandler ())
0 commit comments