Sfoglia il codice sorgente

Fix login/logout interactions

Andrea Fazzi 6 anni fa
parent
commit
a83261e204
4 ha cambiato i file con 14 aggiunte e 58 eliminazioni
  1. 0 53
      handlers/dashboard.go
  2. 9 2
      handlers/handlers.go
  3. 2 3
      handlers/login.go
  4. 3 0
      templates/login.html.tpl

+ 0 - 53
handlers/dashboard.go

@@ -1,53 +0,0 @@
-package api
-
-import (
-	"net/http"
-
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-)
-
-func dashboardHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-
-		var (
-			teachers   []orm.Teacher
-			classes    []orm.Class
-			subjects   []orm.Subject
-			activities []orm.Activity
-			data       struct {
-				NumOfTeachers   int
-				NumOfSubjects   int
-				NumOfClasses    int
-				NumOfActivities int
-				Issues          []orm.Issue
-			}
-		)
-
-		if err := orm.DB().Preload("Teacher").Find(&data.Issues).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Find(&teachers).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Find(&classes).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Find(&activities).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Find(&subjects).Error; err != nil {
-			panic(err)
-		}
-
-		data.NumOfTeachers = len(teachers)
-		data.NumOfActivities = len(activities)
-		data.NumOfSubjects = len(subjects)
-		data.NumOfClasses = len(classes)
-
-	}
-	return http.HandlerFunc(fn)
-}

+ 9 - 2
handlers/handlers.go

@@ -94,7 +94,7 @@ func Handlers() *mux.Router {
 
 	// Dashboard
 
-	r.Handle("/", jwtCookie.Handler(recoverHandler(dashboardHandler())))
+	r.Handle("/", jwtCookie.Handler(recoverHandler(homeHandler())))
 
 	// Generate model handlers
 
@@ -113,7 +113,7 @@ func Handlers() *mux.Router {
 }
 
 func onError(w http.ResponseWriter, r *http.Request, err string) {
-	http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+	http.Redirect(w, r, "/login?tpl_layout=login&tpl_content=login", http.StatusTemporaryRedirect)
 }
 
 func respondWithStaticFile(w http.ResponseWriter, filename string) error {
@@ -232,3 +232,10 @@ func modelHandler(base, path, redirectPath string) http.Handler {
 
 	return http.HandlerFunc(fn)
 }
+
+func homeHandler() http.Handler {
+	fn := func(w http.ResponseWriter, r *http.Request) {
+		http.Redirect(w, r, "/teachers?format=html&tpl_layout=teachers&tpl_content=teachers", http.StatusSeeOther)
+	}
+	return http.HandlerFunc(fn)
+}

+ 2 - 3
handlers/login.go

@@ -4,7 +4,6 @@ import (
 	"errors"
 	"fmt"
 	"net/http"
-	"net/url"
 	"time"
 
 	jwt "github.com/dgrijalva/jwt-go"
@@ -32,13 +31,13 @@ func logoutHandler() http.Handler {
 func loginHandler() http.Handler {
 	fn := func(w http.ResponseWriter, r *http.Request) {
 		if r.Method == "GET" {
-			renderer.Render["html"](w, r, nil, url.Values{"tpl_layout": []string{"login"}, "tpl_content": []string{"login"}})
+			renderer.Render["html"](w, r, nil, r.URL.Query())
 		}
 		if r.Method == "POST" {
 			r.ParseForm()
 			token, err := getToken(r.FormValue("username"), r.FormValue("password"))
 			if err != nil {
-				panic(err)
+				http.Redirect(w, r, "/login?tpl_layout=login&tpl_content=login&failed=true", http.StatusSeeOther)
 			} else {
 				session, err := store.Get(r, "login-session")
 				if err != nil {

+ 3 - 0
templates/login.html.tpl

@@ -17,6 +17,9 @@
       </div>
       <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>   
     </form>
+    {{if .Options.Get "failed"}}
+    <p class="text-center text-danger">Autenticazione fallita!</p>
+    {{end}}
     <p class="text-center">Sviluppato con <span class="glyphicon glyphicon-heart" aria-hidden="true"></span> da <a href="https://github.com/remogatto">Andrea
     Fazzi</a> per il <a href="https://www.carducci-dante.gov.it">Liceo
     "Carducci-Dante"</a> di Trieste</p>