impl oauth

master
Bel LaPointe 2021-04-20 07:04:05 -05:00
parent 0e22586e12
commit de5f17e2c9
2 changed files with 25 additions and 6 deletions

View File

@ -14,6 +14,7 @@ var (
StoreUser string StoreUser string
StorePass string StorePass string
Root string Root string
OAuth string
) )
func init() { func init() {
@ -31,6 +32,7 @@ func Refresh() {
as.Append(args.STRING, "storeaddr", "addr of store", "") as.Append(args.STRING, "storeaddr", "addr of store", "")
as.Append(args.STRING, "storeuser", "user of store", "") as.Append(args.STRING, "storeuser", "user of store", "")
as.Append(args.STRING, "storepass", "pass of store", "") as.Append(args.STRING, "storepass", "pass of store", "")
as.Append(args.STRING, "oauth", "url for boauthz", "")
as.Append(args.STRING, "root", "root of static files", "./public") as.Append(args.STRING, "root", "root of static files", "./public")
if err := as.Parse(); err != nil { if err := as.Parse(); err != nil {
panic(err) panic(err)
@ -42,4 +44,5 @@ func Refresh() {
StoreUser = as.Get("storeuser").GetString() StoreUser = as.Get("storeuser").GetString()
StorePass = as.Get("storepass").GetString() StorePass = as.Get("storepass").GetString()
Root = as.Get("root").GetString() Root = as.Get("root").GetString()
OAuth = as.Get("oauth").GetString()
} }

View File

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"io" "io"
"local/gziphttp" "local/gziphttp"
"local/oauth2/oauth2client"
"local/router" "local/router"
"local/todo-server/config" "local/todo-server/config"
"log" "log"
@ -22,32 +23,34 @@ func (s *Server) Routes() error {
}{ }{
{ {
path: "/", path: "/",
handler: s.gzip(s.index), handler: s.index,
}, },
{ {
path: "/mytinytodo_lang.php", path: "/mytinytodo_lang.php",
handler: s.gzip(s.lang), handler: s.lang,
}, },
{ {
path: fmt.Sprintf("/themes/%s%s", router.Wildcard, router.Wildcard), path: fmt.Sprintf("/themes/%s%s", router.Wildcard, router.Wildcard),
handler: s.gzip(s.handleDeviceCSS), handler: s.handleDeviceCSS,
}, },
{ {
path: fmt.Sprintf("%s%s", router.Wildcard, router.Wildcard), path: fmt.Sprintf("%s%s", router.Wildcard, router.Wildcard),
handler: s.gzip(s.phpProxy), handler: s.phpProxy,
}, },
{ {
path: "/ajax.php", path: "/ajax.php",
handler: s.gzip(s.HandleAjax), handler: s.HandleAjax,
}, },
} }
for _, route := range routes { for _, route := range routes {
handler := route.handler
handler = s.gzip(handler)
handler = s.oauth(handler)
if err := s.Add(route.path, route.handler); err != nil { if err := s.Add(route.path, route.handler); err != nil {
return err return err
} }
} }
s.NotFound = s.gzip(s.index)
return nil return nil
} }
@ -143,6 +146,19 @@ func (s *Server) _static(w http.ResponseWriter, r *http.Request) error {
return err return err
} }
func (s *Server) oauth(h http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if config.OAuth != "" {
err := oauth2client.Authenticate(config.OAuth, strings.Split(r.Host, ".")[0], w, r)
if err != nil {
log.Println("oauth failure", err)
return
}
}
h(w, r)
}
}
func (s *Server) gzip(h http.HandlerFunc) http.HandlerFunc { func (s *Server) gzip(h http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
if gziphttp.Can(r) { if gziphttp.Can(r) {