func()

in auth.go [15:44]


func (s *Server) authLogin() http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		rt := r.URL.Query().Get("redirect_to")

		if s.config.RedirectToLogin && rt != "" {
			rtu, err := url.Parse(rt)
			if err != nil {
				log.Error().Err(err).Send()
				http.Error(w, "Invalid URL Format", http.StatusInternalServerError)
				return
			}

			if rtu.Host != "" && rtu.Host != s.config.BaseDomain && !strings.HasSuffix(rtu.Host, "."+s.config.BaseDomain) {
				log.Error().Err(fmt.Errorf("invalid hostname %s", rtu.Host))
				http.Error(w, "Invalid Host", http.StatusInternalServerError)
				return
			}

			session, _ := s.sessionStore.Get(r, sessionName)
			session.Values["redirect_to"] = rtu.String()
			if err = session.Save(r, w); err != nil {
				log.Error().Err(err).Send()
				http.Error(w, err.Error(), http.StatusInternalServerError)
				return
			}
		}

		gothic.BeginAuthHandler(w, r)
	}
}