mirror of
https://github.com/Luzifer/vault-otp-ui.git
synced 2024-11-09 16:50:05 +00:00
Remove template rendering, send vars through extra JS file
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
8b77004a95
commit
ff37285740
1 changed files with 17 additions and 23 deletions
40
main.go
40
main.go
|
@ -16,9 +16,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Luzifer/rconfig"
|
|
||||||
log "github.com/Sirupsen/logrus"
|
log "github.com/Sirupsen/logrus"
|
||||||
"github.com/alecthomas/template"
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/gorilla/securecookie"
|
"github.com/gorilla/securecookie"
|
||||||
"github.com/gorilla/sessions"
|
"github.com/gorilla/sessions"
|
||||||
|
@ -26,6 +24,8 @@ import (
|
||||||
"github.com/tdewolff/minify/html"
|
"github.com/tdewolff/minify/html"
|
||||||
"github.com/tdewolff/minify/js"
|
"github.com/tdewolff/minify/js"
|
||||||
validator "gopkg.in/validator.v2"
|
validator "gopkg.in/validator.v2"
|
||||||
|
|
||||||
|
"github.com/Luzifer/rconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -96,6 +96,7 @@ func main() {
|
||||||
r := mux.NewRouter()
|
r := mux.NewRouter()
|
||||||
r.HandleFunc("/oauth2", handleOAuthCallback)
|
r.HandleFunc("/oauth2", handleOAuthCallback)
|
||||||
r.HandleFunc("/application.js", handleApplicationJS)
|
r.HandleFunc("/application.js", handleApplicationJS)
|
||||||
|
r.HandleFunc("/vars.js", handleApplicationVars)
|
||||||
r.HandleFunc("/codes.json", handleCodesJSON)
|
r.HandleFunc("/codes.json", handleCodesJSON)
|
||||||
r.PathPrefix("/static").HandlerFunc(handleStatics)
|
r.PathPrefix("/static").HandlerFunc(handleStatics)
|
||||||
r.HandleFunc("/", handleIndexPage)
|
r.HandleFunc("/", handleIndexPage)
|
||||||
|
@ -118,32 +119,13 @@ func getFileContentFallback(filename string) (io.Reader, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleIndexPage(res http.ResponseWriter, r *http.Request) {
|
func handleIndexPage(res http.ResponseWriter, r *http.Request) {
|
||||||
sess, _ := cookieStore.Get(r, sessionName)
|
|
||||||
_, hasAccessToken := sess.Values["access_token"]
|
|
||||||
|
|
||||||
content, err := getFileContentFallback("index.html")
|
content, err := getFileContentFallback("index.html")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(res, "No suitable index page found", http.StatusInternalServerError)
|
http.Error(res, "No suitable index page found", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
buf := new(bytes.Buffer)
|
mini.Minify("text/html", res, content)
|
||||||
io.Copy(buf, content)
|
|
||||||
|
|
||||||
tpl, err := template.New("index").Parse(buf.String())
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("Parsing index template failed: %s", err)
|
|
||||||
http.Error(res, "No suitable index page found", http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
outbuf := new(bytes.Buffer)
|
|
||||||
tpl.Execute(outbuf, map[string]interface{}{
|
|
||||||
"isloggedin": hasAccessToken,
|
|
||||||
"authurl": getAuthenticationURL(),
|
|
||||||
})
|
|
||||||
|
|
||||||
mini.Minify("text/html", res, outbuf)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleApplicationJS(res http.ResponseWriter, r *http.Request) {
|
func handleApplicationJS(res http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -156,6 +138,18 @@ func handleApplicationJS(res http.ResponseWriter, r *http.Request) {
|
||||||
mini.Minify("application/javascript", res, content)
|
mini.Minify("application/javascript", res, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleApplicationVars(w http.ResponseWriter, r *http.Request) {
|
||||||
|
sess, _ := cookieStore.Get(r, sessionName)
|
||||||
|
_, hasAccessToken := sess.Values["access_token"]
|
||||||
|
|
||||||
|
var buf = new(bytes.Buffer)
|
||||||
|
|
||||||
|
fmt.Fprintf(buf, "const signedIn = %v\n", hasAccessToken)
|
||||||
|
fmt.Fprintf(buf, "const authUrl = %q\n", getAuthenticationURL())
|
||||||
|
|
||||||
|
mini.Minify("application/javascript", w, buf)
|
||||||
|
}
|
||||||
|
|
||||||
func handleOAuthCallback(res http.ResponseWriter, r *http.Request) {
|
func handleOAuthCallback(res http.ResponseWriter, r *http.Request) {
|
||||||
sess, _ := cookieStore.Get(r, sessionName)
|
sess, _ := cookieStore.Get(r, sessionName)
|
||||||
|
|
||||||
|
@ -241,7 +235,7 @@ func handleCodesJSON(res http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
func handleStatics(res http.ResponseWriter, r *http.Request) {
|
func handleStatics(res http.ResponseWriter, r *http.Request) {
|
||||||
req := strings.TrimLeft(r.URL.Path, "/")
|
req := strings.TrimLeft(r.URL.Path, "/")
|
||||||
ext := req[strings.LastIndex(req, "."):len(req)]
|
ext := req[strings.LastIndex(req, "."):]
|
||||||
t := mime.TypeByExtension(ext)
|
t := mime.TypeByExtension(ext)
|
||||||
|
|
||||||
b, err := Asset(req)
|
b, err := Asset(req)
|
||||||
|
|
Loading…
Reference in a new issue