diff --git a/admin_endpoints.go b/admin_endpoints.go index 951c875..5bf61a4 100644 --- a/admin_endpoints.go +++ b/admin_endpoints.go @@ -45,6 +45,8 @@ func handleAdmin(w http.ResponseWriter, req *http.Request) { handleAdminVotes(w, req, page) case "mode": handleAdminSetMode(w, req, page) + case "authmode": + handleAdminSetAuthMode(w, req, page) default: page.TemplateData = getCondorcetResult() page.show("admin-main.html", w) @@ -63,3 +65,15 @@ func handleAdminSetMode(w http.ResponseWriter, req *http.Request, page *pageData } redirect("/admin", w, req) } + +func handleAdminSetAuthMode(w http.ResponseWriter, req *http.Request, page *pageData) { + vars := mux.Vars(req) + newMode, err := strconv.Atoi(vars["id"]) + if err != nil { + page.session.setFlashMessage("Invalid Authentication Mode: "+vars["id"], "error") + } + if dbSetAuthMode(newMode) != nil { + page.session.setFlashMessage("Invalid Authentication Mode: "+vars["id"], "error") + } + redirect("/admin", w, req) +} diff --git a/admin_games.go b/admin_games.go index b1e84ba..ff41573 100644 --- a/admin_games.go +++ b/admin_games.go @@ -34,8 +34,9 @@ func handleAdminGames(w http.ResponseWriter, req *http.Request, page *pageData) case "save": name := req.FormValue("gamename") desc := req.FormValue("gamedesc") + link := req.FormValue("gamelink") if dbIsValidTeam(teamId) { - if err := dbUpdateTeamGame(teamId, name, desc); err != nil { + if err := dbUpdateTeamGame(teamId, name, link, desc); err != nil { page.session.setFlashMessage("Error updating game: "+err.Error(), "error") } else { page.session.setFlashMessage("Team game updated", "success") diff --git a/assets.go b/assets.go index 06ec61f..3468421 100644 --- a/assets.go +++ b/assets.go @@ -201,28 +201,28 @@ SExORVYLEQephirOzE3XK8kozU3KS8zMAatMLi0qzi+yUijIzwRaVQRSBQgAAP//D/6XxHkAAAA= "/assets/css/gjvote.css": { local: "assets/css/gjvote.css", size: 4090, - modtime: 1500039735, + modtime: 1500473492, compressed: ` -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 `, }, @@ -11952,41 +11952,42 @@ gXNZg01WlzwTO4QO8+DQa0kXLC/+GGcx3uzdZBOZuF7yMjkoIN5n+kVS9TMAAP//58Xge8kCAAA= "/templates/admin-editteam.html": { local: "templates/admin-editteam.html", - size: 7565, - modtime: 1500052762, + size: 7798, + modtime: 1500467841, compressed: ` -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 +LoO6ef83AAD//5ZGKNl2HgAA `, }, @@ -12038,15 +12039,17 @@ Xo6z3V9nVvnKh0MZ+h0AAP//kX1qvCYDAAA= "/templates/admin-main.html": { local: "templates/admin-main.html", - size: 1024, - modtime: 1500039735, + size: 1476, + modtime: 1500477139, compressed: ` -H4sIAAAJbogA/6yST0/CQBDF736KSUPCRboQb6ZtYjTxpDGKel7aoWzc7uL+KTGE7+4sC6YKKiGcZrtv -5teXN5tVooVScmvzpNTKoXJJcQYQ7kOl0+yiePATKUq40xVmjL6jMPHOaQValSS+5clCqEovUqlL7oRW -6czgNO8zXjVCsYZm2bCfbH829wYHkTBwuq4lDqbCWAcdAZZLEFPAd0ijg2AAhrBadafnRjTcfFAvqoq0 -pHjlwglVZyx2HG139KddEg5wO/rX7Yv+aTZjm/R/Je5s6NobQ7uDR7ReOtvZkpbxQCzDVY3QE+fQa+Ey -h3SMzVxyhzfc8Uhdj0hRUHevTe95g3SfMbrZQqLtyGYR3vX7JX/3dxVShScsQ9R29xHtxpwcuKlWO7T9 -dYxo96/8eLhD3gT4ONRTw2tKN8BvQz013Fs0Af4c6p7HtSmfAQAA//8bOYdyAAQAAA== +H4sIAAAJbogA/6xTTQ/aMAy971d4FRKXtQHtNrWVEJN22oc2tp1Da0q0NGFJWoQQ/30OAVTxMVDhgpPY +fjy/56alaKGQ3NosKrRyqFyUvwHw7z7Safk+/9bMpSjgsy4xZXQPiXnjnFagVUHJP1m0FqrU60Tqgjuh +VbI0uMiGjJe1UKymXjYaRsc/WzUG44AQO11VEuOFMNZBJwHbLYgF4F9IAgNPAEaw23W7V0bU3GyoFlVJ +uSj/zYUTqkpZqOhNd/xfupR4gO34Lttf+pxsyg7qp2/j+MKMiZR6jSWEPpihIcJc2r7O8MYtn3RnQhAP +evNVyQ34eto0QXRokKkUdLHP2HWaobdlpxHuGzZRmwNnmHLlfcCr7sWx/725FRfGThtjPOh3tI10XT+1 +DAfCMlxVCAPxDgYtfMggmWG9kqTjR+54QN23SJFT9aBNvvAa6T1l9HIECZMEbBbAT6y76bPF81LDDyy8 +/lfW7VL36EH7WpLQDvefAt7Yg/7gDnntwWc+vhq8InU9+CcfXw3eWDQe/KePV1bsEP4FAAD//8Y0rK/E +BQAA `, }, @@ -12160,101 +12163,102 @@ AAAA//9ablv2IQMAAA== "/templates/public-teammgmt.html": { local: "templates/public-teammgmt.html", - size: 6160, - modtime: 1500052768, + size: 6401, + modtime: 1500470615, compressed: ` -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 -z69eFl9HLqrLed2b/w0AAP//tiDe3hAYAAA= +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 +GQAA `, }, "/templates/public-voting.html": { local: "templates/public-voting.html", - size: 12041, - modtime: 1500050367, + size: 12039, + modtime: 1500477012, compressed: ` -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 `, }, diff --git a/assets/css/gjvote.css b/assets/css/gjvote.css index bfbe484..fb7f1a2 100644 --- a/assets/css/gjvote.css +++ b/assets/css/gjvote.css @@ -189,7 +189,7 @@ table tfoot { .pure-button-toggle-last { border-top-left-radius: 0px; border-bottom-left-radius: 0px; - margin-left: -1px; + margin-left: -5px; border-left: 1px solid #CCC; } diff --git a/main.go b/main.go index a72b605..03badeb 100644 --- a/main.go +++ b/main.go @@ -66,7 +66,7 @@ type pageData struct { ClientId string ClientIsAuth bool ClientIsServer bool - TeamID string + AuthMode int PublicMode int TemplateData interface{} @@ -290,11 +290,11 @@ func InitPageData(w http.ResponseWriter, req *http.Request) *pageData { p.ClientId = p.session.getClientId() p.ClientIsAuth = clientIsAuthenticated(p.ClientId, req) p.ClientIsServer = clientIsServer(req) - // TeamID is for team self-administration - p.TeamID, _ = p.session.getStringValue("teamid") // Public Mode p.PublicMode = dbGetPublicSiteMode() + // Authentication Mode + p.AuthMode = dbGetAuthMode() return p } @@ -318,7 +318,6 @@ func (p *pageData) show(tmplName string, w http.ResponseWriter) error { // outputTemplate // Spit out a template func outputTemplate(tmplName string, tmplData interface{}, w http.ResponseWriter) error { - // TODO: Use embedded files for these... Hopefully? n := "/templates/" + tmplName l := template.Must(template.New("layout").Parse(FSMustString(site.DevMode, n))) t := template.Must(l.Parse(FSMustString(site.DevMode, n))) diff --git a/model.go b/model.go index 8dedbb2..2365065 100644 --- a/model.go +++ b/model.go @@ -16,6 +16,12 @@ const ( SiteModeError ) +const ( + AuthModeAuthentication = iota + AuthModeAll + AuthModeError +) + func GetDefaultSiteConfig() *siteData { ret := new(siteData) ret.Title = "ICT GameJam" @@ -144,6 +150,21 @@ func dbSaveSiteConfig(dat *siteData) error { return db.SetValue(siteConf, "server-dir", dat.ServerDir) } +func dbGetAuthMode() int { + if ret, err := db.GetInt([]string{"site"}, "auth-mode"); err != nil { + return AuthModeAuthentication + } else { + return ret + } +} + +func dbSetAuthMode(mode int) error { + if mode < 0 || mode >= AuthModeError { + return errors.New("Invalid site mode") + } + return db.SetInt([]string{"site"}, "auth-mode", mode) +} + func dbGetPublicSiteMode() int { if ret, err := db.GetInt([]string{"site"}, "public-mode"); err != nil { return SiteModeWaiting diff --git a/model_games.go b/model_games.go index c33833d..1a1a7e4 100644 --- a/model_games.go +++ b/model_games.go @@ -9,6 +9,7 @@ import ( type Game struct { Name string TeamId string + Link string Description string Screenshots []Screenshot } @@ -21,7 +22,7 @@ type Screenshot struct { Filetype string } -func dbUpdateTeamGame(teamId, name, desc string) error { +func dbUpdateTeamGame(teamId, name, link, desc string) error { var err error if err = openDatabase(); err != nil { return err @@ -44,6 +45,9 @@ func dbUpdateTeamGame(teamId, name, desc string) error { if err := db.SetValue(gamePath, "name", name); err != nil { return err } + if err := db.SetValue(gamePath, "link", link); err != nil { + return err + } if err := db.SetValue(gamePath, "description", desc); err != nil { return err } @@ -79,6 +83,9 @@ func dbGetTeamGame(teamId string) *Game { if gm.Description, err = db.GetValue(gamePath, "description"); err != nil { gm.Description = "" } + if gm.Link, err = db.GetValue(gamePath, "link"); err != nil { + gm.Link = "" + } gm.Screenshots = dbGetTeamGameScreenshots(teamId) return gm } diff --git a/public_endpoints.go b/public_endpoints.go index 5f77483..21d857d 100644 --- a/public_endpoints.go +++ b/public_endpoints.go @@ -16,12 +16,13 @@ func initPublicPage(w http.ResponseWriter, req *http.Request) *pageData { } func handleMain(w http.ResponseWriter, req *http.Request) { - switch dbGetPublicSiteMode() { - case SiteModeWaiting: - page := initPublicPage(w, req) + page := initPublicPage(w, req) + showWaiting := (dbGetAuthMode() == AuthModeAuthentication) && !page.ClientIsAuth + showWaiting = showWaiting && (dbGetPublicSiteMode() == SiteModeWaiting) + if showWaiting { page.SubTitle = "" page.show("public-waiting.html", w) - case SiteModeVoting: + } else { loadVotingPage(w, req) } } @@ -153,9 +154,10 @@ func handleTeamMgmtRequest(w http.ResponseWriter, req *http.Request) { redirect("/team/"+teamId, w, req) case "savegame": name := req.FormValue("gamename") + link := req.FormValue("gamelink") desc := req.FormValue("gamedesc") if dbIsValidTeam(teamId) { - if err := dbUpdateTeamGame(teamId, name, desc); err != nil { + if err := dbUpdateTeamGame(teamId, name, link, desc); err != nil { page.session.setFlashMessage("Error updating game: "+err.Error(), "error") } else { page.session.setFlashMessage("Team game updated", "success") diff --git a/templates/admin-editteam.html b/templates/admin-editteam.html index dd7bb80..372d922 100644 --- a/templates/admin-editteam.html +++ b/templates/admin-editteam.html @@ -29,6 +29,10 @@ +