github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/auth/check_authentication_handler.go (about) 1 package auth 2 3 import ( 4 "net/http" 5 6 "github.com/pf-qiu/concourse/v6/atc/api/accessor" 7 ) 8 9 type checkAuthHandler struct { 10 handler http.Handler 11 rejector Rejector 12 } 13 14 func CheckAuthenticationHandler( 15 handler http.Handler, 16 rejector Rejector, 17 ) http.Handler { 18 return checkAuthHandler{ 19 handler: handler, 20 rejector: rejector, 21 } 22 } 23 24 func (h checkAuthHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 25 acc := accessor.GetAccessor(r) 26 27 if acc.IsAuthenticated() { 28 h.handler.ServeHTTP(w, r) 29 } else { 30 h.rejector.Unauthorized(w, r) 31 } 32 } 33 34 type checkAuthIfProvidedHandler struct { 35 handler http.Handler 36 rejector Rejector 37 } 38 39 func CheckAuthenticationIfProvidedHandler( 40 handler http.Handler, 41 rejector Rejector, 42 ) http.Handler { 43 return checkAuthIfProvidedHandler{ 44 handler: handler, 45 rejector: rejector, 46 } 47 } 48 49 func (h checkAuthIfProvidedHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 50 acc := accessor.GetAccessor(r) 51 52 if acc.HasToken() && !acc.IsAuthenticated() { 53 h.rejector.Unauthorized(w, r) 54 } else { 55 h.handler.ServeHTTP(w, r) 56 } 57 }