zitadel/internal/api/ui/login/resources_handler.go
Livio Amstutz 4a0d61d75a
feat: store assets in database (#3290)
* feat: use database as asset storage

* being only uploading assets if allowed

* tests

* fixes

* cleanup after merge

* renaming

* various fixes

* fix: change to repository event types and removed unused code

* feat: set default features

* error handling

* error handling and naming

* fix tests

* fix tests

* fix merge

* rename
2022-04-06 06:13:40 +00:00

37 lines
956 B
Go

package login
import (
"net/http"
"github.com/caos/logging"
"github.com/caos/zitadel/internal/api/assets"
"github.com/caos/zitadel/internal/api/authz"
)
type dynamicResourceData struct {
OrgID string `schema:"orgId"`
DefaultPolicy bool `schema:"default-policy"`
FileName string `schema:"filename"`
}
func (l *Login) handleResources(staticDir http.FileSystem) http.Handler {
return http.FileServer(staticDir)
}
func (l *Login) handleDynamicResources(w http.ResponseWriter, r *http.Request) {
data := new(dynamicResourceData)
err := l.getParseData(r, data)
if err != nil {
return
}
resourceOwner := authz.GetInstance(r.Context()).InstanceID()
if data.OrgID != "" && !data.DefaultPolicy {
resourceOwner = data.OrgID
}
err = assets.GetAsset(w, r, resourceOwner, data.FileName, l.staticStorage)
logging.WithFields("file", data.FileName, "org", resourceOwner).OnError(err).Warn("asset in login could not be served")
}