MCPcopy Create free account
hub / github.com/netlify/gotrue / loadInstanceConfig

Method loadInstanceConfig

api/middleware.go:83–137  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

81}
82
83func (a *API) loadInstanceConfig(w http.ResponseWriter, r *http.Request) (context.Context, error) {
84 ctx := r.Context()
85
86 signature := getSignature(ctx)
87 if signature == "" {
88 return nil, badRequestError("Operator signature missing")
89 }
90
91 claims := NetlifyMicroserviceClaims{}
92 p := jwt.Parser{ValidMethods: []string{jwt.SigningMethodHS256.Name}}
93 _, err := p.ParseWithClaims(signature, &claims, func(token *jwt.Token) (interface{}, error) {
94 return []byte(a.config.OperatorToken), nil
95 })
96 if err != nil {
97 return nil, badRequestError("Operator microservice signature is invalid: %v", err)
98 }
99
100 if claims.InstanceID == "" {
101 return nil, badRequestError("Instance ID is missing")
102 }
103 instanceID, err := uuid.FromString(claims.InstanceID)
104 if err != nil {
105 return nil, badRequestError("Instance ID is not a valid UUID")
106 }
107
108 logEntrySetField(r, "instance_id", instanceID)
109 logEntrySetField(r, "netlify_id", claims.NetlifyID)
110 instance, err := models.GetInstance(a.db, instanceID)
111 if err != nil {
112 if models.IsNotFoundError(err) {
113 return nil, notFoundError("Unable to locate site configuration")
114 }
115 return nil, internalServerError("Database error loading instance").WithInternalError(err)
116 }
117
118 config, err := instance.Config()
119 if err != nil {
120 return nil, internalServerError("Error loading environment config").WithInternalError(err)
121 }
122
123 if claims.SiteURL != "" {
124 config.SiteURL = claims.SiteURL
125 }
126 logEntrySetField(r, "site_url", config.SiteURL)
127
128 ctx = withNetlifyID(ctx, claims.NetlifyID)
129 ctx = withFunctionHooks(ctx, claims.FunctionHooks)
130
131 ctx, err = WithInstanceConfig(ctx, config, instanceID)
132 if err != nil {
133 return nil, internalServerError("Error loading instance config").WithInternalError(err)
134 }
135
136 return ctx, nil
137}
138
139func (a *API) limitHandler(lmt *limiter.Limiter) middlewareHandler {
140 return func(w http.ResponseWriter, req *http.Request) (context.Context, error) {

Callers

nothing calls this directly

Calls 12

GetInstanceFunction · 0.92
IsNotFoundErrorFunction · 0.92
getSignatureFunction · 0.85
badRequestErrorFunction · 0.85
logEntrySetFieldFunction · 0.85
notFoundErrorFunction · 0.85
internalServerErrorFunction · 0.85
withNetlifyIDFunction · 0.85
withFunctionHooksFunction · 0.85
WithInstanceConfigFunction · 0.85
ConfigMethod · 0.80
WithInternalErrorMethod · 0.45

Tested by

no test coverage detected