@@ -694,8 +694,21 @@ func (me *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
694694 return
695695 }
696696
697+ wk , err := me .GetWorker (appname , k .String ("dir" ), k .String ("domain" ))
698+ if err != nil {
699+ if errors .Is (err , app .ErrAppNotFound ) {
700+ w .WriteHeader (http .StatusNotFound )
701+ w .Write ([]byte (fmt .Sprintf ("No app found for host %s" , r .Host )))
702+ return
703+ }
704+
705+ w .WriteHeader (http .StatusInternalServerError )
706+ fmt .Fprintf (w , "failed to get worker: %v" , err )
707+ return
708+ }
709+
697710 claims , err := me .extractClaims (r )
698- if err != nil && isRoutePrivate (appname , r .URL .Path ) {
711+ if err != nil && isRoutePrivate (wk . App , r .URL .Path ) {
699712 if me .oidcIssuerUrl == nil {
700713 http .Error (w , http .StatusText (http .StatusUnauthorized ), http .StatusUnauthorized )
701714 return
@@ -775,7 +788,7 @@ func (me *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
775788 }
776789 }
777790
778- if isRoutePrivate (appname , r .URL .Path ) && ! isAuthorized (appname , claims .Email , claims .Group ) {
791+ if isRoutePrivate (wk . App , r .URL .Path ) && ! isAuthorized (appname , claims .Email , claims .Group ) {
779792 if claims .Email == "" {
780793 http .Redirect (w , r , fmt .Sprintf ("https://%s/_smallweb/signin" , r .Host ), http .StatusTemporaryRedirect )
781794 return
@@ -790,32 +803,19 @@ func (me *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
790803 r .Header .Set ("Remote-Group" , claims .Group )
791804 r .Header .Set ("Remote-Name" , claims .Name )
792805
793- wk , err := me .GetWorker (appname , k .String ("dir" ), k .String ("domain" ))
794- if err != nil {
795- if errors .Is (err , app .ErrAppNotFound ) {
796- w .WriteHeader (http .StatusNotFound )
797- w .Write ([]byte (fmt .Sprintf ("No app found for host %s" , r .Host )))
798- return
799- }
800-
801- w .WriteHeader (http .StatusInternalServerError )
802- fmt .Fprintf (w , "failed to get worker: %v" , err )
803- return
804- }
805-
806806 wk .ServeHTTP (w , r )
807807}
808808
809- func isRoutePrivate (appname string , route string ) bool {
810- isPrivate := k . Bool ( fmt . Sprintf ( "apps.%s.private" , appname ))
809+ func isRoutePrivate (a app. App , route string ) bool {
810+ isPrivate := a . Config . Private
811811
812- for _ , publicRoute := range k . Strings ( fmt . Sprintf ( "apps.%s.publicRoutes" , appname )) {
812+ for _ , publicRoute := range a . Config . PublicRoutes {
813813 if ok , _ := doublestar .Match (publicRoute , route ); ok {
814814 isPrivate = false
815815 }
816816 }
817817
818- for _ , privateRoute := range k . Strings ( fmt . Sprintf ( "apps.%s.privateRoutes" , appname )) {
818+ for _ , privateRoute := range a . Config . PrivateRoutes {
819819 if ok , _ := doublestar .Match (privateRoute , route ); ok {
820820 isPrivate = true
821821 }
0 commit comments