Just a whole bunch of fixing
This commit is contained in:
@@ -4,22 +4,23 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"fornaxian.com/pixeldrain-web/pixelapi"
|
||||
|
||||
"github.com/Fornaxian/log"
|
||||
"github.com/julienschmidt/httprouter"
|
||||
)
|
||||
|
||||
// ServeListViewer controller for GET /l/:id
|
||||
func (wc *WebController) serveListViewer(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
|
||||
var list, aerr = wc.api.GetList(p.ByName("id"))
|
||||
if aerr != nil {
|
||||
if aerr.ReqError {
|
||||
log.Error("API request error occurred: %s", aerr.Value)
|
||||
var list, err = wc.api.GetList(p.ByName("id"))
|
||||
if err != nil {
|
||||
if (err.(pixelapi.Error)).ReqError {
|
||||
log.Error("API request error occurred: %s", (err.(pixelapi.Error)).Value)
|
||||
}
|
||||
wc.serveNotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
var err error
|
||||
var ogData OGData
|
||||
listdata := map[string]interface{}{
|
||||
"id": list.ID,
|
||||
|
@@ -15,6 +15,7 @@ type TemplateData struct {
|
||||
Authenticated bool
|
||||
Username string
|
||||
APIEndpoint template.URL
|
||||
PixelAPI *pixelapi.PixelAPI
|
||||
|
||||
Other interface{}
|
||||
Title string
|
||||
@@ -28,11 +29,11 @@ func (wc *WebController) newTemplateData(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
if key, err := wc.getAPIKey(r); err == nil {
|
||||
var api = pixelapi.New(wc.conf.APIURLInternal, key)
|
||||
uinf, err := api.UserInfo()
|
||||
t.PixelAPI = pixelapi.New(wc.conf.APIURLInternal, key)
|
||||
uinf, err := t.PixelAPI.UserInfo()
|
||||
if err != nil {
|
||||
// This session key doesn't work, delete it
|
||||
log.Debug("Invalid API key '%s' passed", key)
|
||||
log.Debug("Session check for key '%s' failed: %s", key, err)
|
||||
http.SetCookie(w, &http.Cookie{
|
||||
Name: "pd_auth_key",
|
||||
Value: "",
|
||||
@@ -45,6 +46,8 @@ func (wc *WebController) newTemplateData(w http.ResponseWriter, r *http.Request)
|
||||
// Authentication succeeded
|
||||
t.Authenticated = true
|
||||
t.Username = uinf.Username
|
||||
} else {
|
||||
t.PixelAPI = pixelapi.New(wc.conf.APIURLInternal, "")
|
||||
}
|
||||
|
||||
return t
|
||||
|
@@ -23,61 +23,3 @@ func (wc *WebController) serveLogout(
|
||||
|
||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
func (wc *WebController) serveUserHome(
|
||||
w http.ResponseWriter,
|
||||
r *http.Request,
|
||||
p httprouter.Params,
|
||||
) {
|
||||
var key string
|
||||
var err error
|
||||
if key, err = wc.getAPIKey(r); err != nil {
|
||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||
return
|
||||
}
|
||||
|
||||
var api = pixelapi.New(wc.conf.APIURLInternal, key)
|
||||
files, aerr := api.UserFiles(0, 18)
|
||||
if aerr != nil {
|
||||
log.Error("Cannot get user files: %v", aerr)
|
||||
wc.serveNotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
templateData := wc.newTemplateData(w, r)
|
||||
templateData.Other = files
|
||||
|
||||
err = wc.templates.Get().ExecuteTemplate(w, "user_home", templateData)
|
||||
if err != nil {
|
||||
log.Error("Failed to execute template: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (wc *WebController) serveUserFiles(
|
||||
w http.ResponseWriter,
|
||||
r *http.Request,
|
||||
p httprouter.Params,
|
||||
) {
|
||||
var key string
|
||||
var err error
|
||||
if key, err = wc.getAPIKey(r); err != nil {
|
||||
http.Redirect(w, r, "/", http.StatusTemporaryRedirect)
|
||||
return
|
||||
}
|
||||
|
||||
var api = pixelapi.New(wc.conf.APIURLInternal, key)
|
||||
files, aerr := api.UserFiles(0, 1000)
|
||||
if aerr != nil {
|
||||
log.Error("Cannot get user files: %v", aerr)
|
||||
wc.serveNotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
templateData := wc.newTemplateData(w, r)
|
||||
templateData.Other = files
|
||||
|
||||
err = wc.templates.Get().ExecuteTemplate(w, "file_manager", templateData)
|
||||
if err != nil {
|
||||
log.Error("Failed to execute template: %s", err)
|
||||
}
|
||||
}
|
||||
|
@@ -36,39 +36,43 @@ func New(r *httprouter.Router, prefix string, conf *conf.PixelWebConfig) *WebCon
|
||||
// Serve static files
|
||||
r.ServeFiles(prefix+"/res/*filepath", http.Dir(wc.staticResourceDir+"/res"))
|
||||
|
||||
r.GET(prefix+"/" /* */, wc.serveTemplate("home"))
|
||||
r.GET(prefix+"/" /* */, wc.serveTemplate("home", false))
|
||||
r.GET(prefix+"/favicon.ico" /* */, wc.serveFile("/favicon.ico"))
|
||||
r.GET(prefix+"/global.css" /* */, wc.globalCSSHandler)
|
||||
r.GET(prefix+"/api" /* */, wc.serveTemplate("apidoc"))
|
||||
r.GET(prefix+"/history" /* */, wc.serveTemplate("history_cookies"))
|
||||
r.GET(prefix+"/api" /* */, wc.serveTemplate("apidoc", false))
|
||||
r.GET(prefix+"/history" /* */, wc.serveTemplate("history_cookies", false))
|
||||
r.GET(prefix+"/u/:id" /* */, wc.serveFileViewer)
|
||||
r.GET(prefix+"/u/:id/preview" /**/, wc.serveFilePreview)
|
||||
r.GET(prefix+"/l/:id" /* */, wc.serveListViewer)
|
||||
r.GET(prefix+"/t" /* */, wc.serveTemplate("paste"))
|
||||
r.GET(prefix+"/t" /* */, wc.serveTemplate("paste", false))
|
||||
|
||||
r.GET(prefix+"/register" /* */, wc.serveTemplate("register"))
|
||||
r.GET(prefix+"/login" /* */, wc.serveTemplate("login"))
|
||||
r.GET(prefix+"/logout" /* */, wc.serveTemplate("logout"))
|
||||
r.GET(prefix+"/register" /* */, wc.serveTemplate("register", false))
|
||||
r.GET(prefix+"/login" /* */, wc.serveTemplate("login", false))
|
||||
r.GET(prefix+"/logout" /* */, wc.serveTemplate("logout", true))
|
||||
r.POST(prefix+"/logout" /* */, wc.serveLogout)
|
||||
r.GET(prefix+"/user" /* */, wc.serveUserHome)
|
||||
r.GET(prefix+"/files" /* */, wc.serveUserFiles)
|
||||
r.GET(prefix+"/user" /* */, wc.serveTemplate("user_home", true))
|
||||
r.GET(prefix+"/user/files" /* */, wc.serveTemplate("user_files", true))
|
||||
|
||||
r.NotFound = http.HandlerFunc(wc.serveNotFound)
|
||||
|
||||
return wc
|
||||
}
|
||||
|
||||
func (wc *WebController) ReloadTemplates() {
|
||||
wc.templates.ParseTemplates(false)
|
||||
}
|
||||
|
||||
func (wc *WebController) serveTemplate(tpl string) httprouter.Handle {
|
||||
func (wc *WebController) serveTemplate(
|
||||
tpl string,
|
||||
requireAuth bool,
|
||||
) httprouter.Handle {
|
||||
return func(
|
||||
w http.ResponseWriter,
|
||||
r *http.Request,
|
||||
p httprouter.Params,
|
||||
) {
|
||||
err := wc.templates.Get().ExecuteTemplate(w, tpl, wc.newTemplateData(w, r))
|
||||
var tpld = wc.newTemplateData(w, r)
|
||||
if requireAuth && !tpld.Authenticated {
|
||||
http.Redirect(w, r, "/login", http.StatusSeeOther)
|
||||
return
|
||||
}
|
||||
err := wc.templates.Get().ExecuteTemplate(w, tpl, tpld)
|
||||
if err != nil {
|
||||
log.Error("Error executing template '%s': %s", tpl, err)
|
||||
}
|
||||
@@ -87,7 +91,7 @@ func (wc *WebController) serveFile(path string) httprouter.Handle {
|
||||
|
||||
func (wc *WebController) serveNotFound(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("Not Found: %s", r.URL)
|
||||
wc.templates.Get().ExecuteTemplate(w, "error", wc.newTemplateData(w, r))
|
||||
wc.templates.Get().ExecuteTemplate(w, "404", wc.newTemplateData(w, r))
|
||||
}
|
||||
|
||||
func (wc *WebController) getAPIKey(r *http.Request) (key string, err error) {
|
||||
|
Reference in New Issue
Block a user