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)
}
}