media/patreon-dl/gui/handlers/middleware.go

85 lines
2.0 KiB
Go
Executable File

// Copyright 2024 Brian Newman. All rights reserved.
package handlers
import (
"database/sql"
"fmt"
"net/http"
"net/url"
"time"
"cdmnky.io/net/patreon-ui/local.pkg/src/response"
"cdmnky.io/net/patreon-ui/local.pkg/src/sitevars"
"go.cdmnky.io/v2/net/router"
"go.cdmnky.io/v2/net/session"
)
// Unauthorized ...
func Unauthorized(w http.ResponseWriter) {
resp := response.New(fmt.Sprintf("%v", http.StatusUnauthorized), "Unauthorized", []byte{})
data, _ := resp.ToJSON()
w.WriteHeader(http.StatusUnauthorized)
w.Write(data)
}
// Public ...
func Public(h router.Handle, db *sql.DB, s *session.Manager) router.Handle {
return router.Handle(func(w http.ResponseWriter, r *http.Request, p url.Values) {
t1 := time.Now()
// session := s.SessionStart(w, r)
// if session.Get("token") != nil {
// token := session.Get("token").(string)
// obj := user.New()
// obj.Token = token
// cnt, _ := obj.Db(db).Where(obj).Debug(false).Count()
// if cnt == 0 {
// s.SessionDestroy(w, r)
// }
// }
h(w, r, p)
t2 := time.Now()
var realIP = r.Header.Get("X-Real-IP")
if len(realIP) == 0 {
realIP = r.RemoteAddr
}
var userAgent = r.Header.Get("User-Agent")
var referrer = r.Header.Get("Referer")
now := time.Now()
mask := "2006/01/02 15:04:05"
fmt.Printf("%s|%s|%s|%s|%s|%s|%v\n", now.Format(mask), realIP, r.Method, r.URL.String(), userAgent, referrer, t2.Sub(t1))
})
}
// Secured ...
func Secured(h router.Handle, db *sql.DB, s *session.Manager, sitevars *sitevars.Sitevars) router.Handle {
return router.Handle(func(w http.ResponseWriter, r *http.Request, p url.Values) {
authorized := false
// session := s.SessionStart(w, r)
// if session.Get("token") != nil {
// token := session.Get("token").(string)
// obj := user.New()
// obj.Token = token
// cnt, _ := obj.Db(db).Where(obj).Debug(false).Count()
// if cnt == 1 {
// authorized = true
// }
// }
if authorized {
h(w, r, p)
} else {
Unauthorized(w)
}
})
}