diff --git a/main.go b/main.go index ce3188d..9d41b48 100644 --- a/main.go +++ b/main.go @@ -1,20 +1,27 @@ package main import ( + //"container/list" "database/sql" "fmt" "html/template" "log" "net/http" + //"sync" + //"time" //"net/url" - //"time" - + "github.com/gorilla/sessions" _ "github.com/mattn/go-sqlite3" ) var ( + //sesja + key = []byte("1010101010101") + store = sessions.NewCookieStore(key) + + //do rejestracji biletu KosztBiletuSUMA int //zmiana pinu, hasła i blokada karty @@ -54,26 +61,31 @@ var ( //funkcje sterujące //*************************************************************************** +//############################################################################# +func sesja(w http.ResponseWriter, r *http.Request) { + t, _ := template.ParseFiles("sesja.gtpl") + t.Execute(w, nil) +} + //############################################################################# func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) { - //fmt.Println(localHostDB) t, _ := template.ParseFiles("StronaGlowna.gohtml") t.Execute(w, nil) } //############################################################################# func panel(w http.ResponseWriter, r *http.Request) { - for _, cookie := range r.Cookies() { - fmt.Fprint(w, cookie.Name) + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { + fmt.Println("method:", r.Method) + t, _ := template.ParseFiles("panel.gtpl") + d := struct { + UserView string + }{ + UserView: User} + t.ExecuteTemplate(w, "panel.gtpl", d) } - - fmt.Println("method:", r.Method) - t, _ := template.ParseFiles("panel.gtpl") - d := struct { - UserView string - }{ - UserView: User} - t.ExecuteTemplate(w, "panel.gtpl", d) } //############################################################################# @@ -91,10 +103,40 @@ func wylogowano(w http.ResponseWriter, r *http.Request) { dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) - db.Close() } //-------------------------------------------------- + //sesja---- + session, err := store.Get(r, "sesja1") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + session.Values[User] = false + session.Save(r, w) + //--------- + //ustaw wartości na null + KosztBiletuSUMA = 0 + pinFROMsite = 0 + RFIDblockORno = "lost" + hasloFROMsite = "lost" + loginFROMsite = "lost" + passwordFROMsite = "lost" + IDusers = 0 + User = "lost" + Password = "lost" + PIN = 0 + RFID = 0 + Login = "lost" + IDbiletu = 0 + KtoZabralID = 0 + DataCzas = "lost" + KosztBiletu = 0 + CzyZaplacony = "lost" + IDdania = 0 + NazwaDania = "lost" + KosztDania = 0 + User = "lost" t, _ := template.ParseFiles("wylogowano.gtpl") type user struct { @@ -103,6 +145,7 @@ func wylogowano(w http.ResponseWriter, r *http.Request) { u := user{ UserView: User} t.ExecuteTemplate(w, "wylogowano.gtpl", u) + } //############################################################################# @@ -122,6 +165,15 @@ func login(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { if Login == loginFROMsite { if Password == passwordFROMsite { + //sesja start----- + session, err := store.Get(r, "sesja1") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + session.Values[User] = true + session.Save(r, w) + //---------------- http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther) panel(w, r) break @@ -161,225 +213,213 @@ func login(w http.ResponseWriter, r *http.Request) { //############################################################################# func menuDan(w http.ResponseWriter, r *http.Request) { - t, _ := template.ParseFiles("menuDanNaglowek.gtpl") - d := struct { - UserView string - }{ - UserView: User} - t.ExecuteTemplate(w, "menuDanNaglowek.gtpl", d) - //dania ---------------------------------- - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr2(err) - rows2, err := db.Query("SELECT * FROM dania") - checkErr(err) - for rows2.Next() { - err = rows2.Scan(&IDdania, &NazwaDania, &KosztDania) - checkErr3(err) - //fmt.Printf("%d. %s, %d \n", IDdania, NazwaDania, KosztDania) - t, _ := template.ParseFiles("menuDan.gtpl") + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { + t, _ := template.ParseFiles("menuDanNaglowek.gtpl") d := struct { - IDdaniaView int - NazwaDaniaView string - KosztDaniaView int + UserView string }{ - IDdaniaView: IDdania, - NazwaDaniaView: NazwaDania, - KosztDaniaView: KosztDania} - t.ExecuteTemplate(w, "menuDan.gtpl", d) + UserView: User} + t.ExecuteTemplate(w, "menuDanNaglowek.gtpl", d) + //dania ---------------------------------- + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr2(err) + rows2, err := db.Query("SELECT * FROM dania") + checkErr(err) + for rows2.Next() { + err = rows2.Scan(&IDdania, &NazwaDania, &KosztDania) + checkErr3(err) + //fmt.Printf("%d. %s, %d \n", IDdania, NazwaDania, KosztDania) + t, _ := template.ParseFiles("menuDan.gtpl") + d := struct { + IDdaniaView int + NazwaDaniaView string + KosztDaniaView int + }{ + IDdaniaView: IDdania, + NazwaDaniaView: NazwaDania, + KosztDaniaView: KosztDania} + t.ExecuteTemplate(w, "menuDan.gtpl", d) + } + //---------------------------------- + rows2.Close() + db.Close() } - //---------------------------------- - rows2.Close() - db.Close() } //############################################################################# func historiaPosilkow(w http.ResponseWriter, r *http.Request) { - t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl") - d := struct { - UserView string - }{ - UserView: User} - t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d) + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { + t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl") + d := struct { + UserView string + }{ + UserView: User} + t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d) - //bilety ---------------------------------- - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) - rows3, err := db.Query("SELECT * FROM bilety") - checkErr(err) - for rows3.Next() { - err = rows3.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) + //bilety ---------------------------------- + db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) - if KtoZabralID == IDusers { - t, _ := template.ParseFiles("historiaPosilkow.gtpl") - d := struct { - IDbiletuView int - KtoZabralView int - DataCzasView string - KosztBiletuView int - CzyZaplaconyView string - }{ - IDbiletuView: IDbiletu, - KtoZabralView: KtoZabralID, - DataCzasView: DataCzas, - KosztBiletuView: KosztBiletu, - CzyZaplaconyView: CzyZaplacony} - t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d) + rows3, err := db.Query("SELECT * FROM bilety") + checkErr(err) + for rows3.Next() { + err = rows3.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) + checkErr(err) + if KtoZabralID == IDusers { + t, _ := template.ParseFiles("historiaPosilkow.gtpl") + d := struct { + IDbiletuView int + KtoZabralView int + DataCzasView string + KosztBiletuView int + CzyZaplaconyView string + }{ + IDbiletuView: IDbiletu, + KtoZabralView: KtoZabralID, + DataCzasView: DataCzas, + KosztBiletuView: KosztBiletu, + CzyZaplaconyView: CzyZaplacony} + t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d) + } + //---------------------------------- } - //---------------------------------- + rows3.Close() + db.Close() } - rows3.Close() - db.Close() } //############################################################################# func platnosci(w http.ResponseWriter, r *http.Request) { - //fmt.Fprint(w, User) + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { - //bilety ---------------------------------- - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) - rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) - checkErr(err) - KosztBiletuSUMA = 0 - for rows5.Next() { - err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) - checkErr3(err) - //if KtoZabralID == User { - if CzyZaplacony == "nie" { - KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA + //bilety ---------------------------------- + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr(err) + rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) + checkErr(err) + KosztBiletuSUMA = 0 + for rows5.Next() { + err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) + checkErr3(err) + //if KtoZabralID == User { + if CzyZaplacony == "nie" { + KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA + } + //---------------------------------- } - //---------------------------------- - } - //fmt.Println(KosztBiletuSUMA) - t, _ := template.ParseFiles("platnosci.gtpl") - checkErr(err) - type zaplac struct { - UserView string - Zaplac int - } - z := zaplac{ - UserView: User, - Zaplac: KosztBiletuSUMA} + //fmt.Println(KosztBiletuSUMA) + t, _ := template.ParseFiles("platnosci.gtpl") + checkErr(err) + type zaplac struct { + UserView string + Zaplac int + } + z := zaplac{ + UserView: User, + Zaplac: KosztBiletuSUMA} - t.ExecuteTemplate(w, "platnosci.gtpl", z) - rows5.Close() - db.Close() + t.ExecuteTemplate(w, "platnosci.gtpl", z) + rows5.Close() + db.Close() + } } //############################################################################# func placeOnline(w http.ResponseWriter, r *http.Request) { - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) - rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) - checkErr(err) - KosztBiletuSUMA = 0 - for rows5.Next() { - err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) - checkErr3(err) - if CzyZaplacony == "nie" { - KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr(err) + rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) + checkErr(err) + KosztBiletuSUMA = 0 + for rows5.Next() { + err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) + checkErr3(err) + if CzyZaplacony == "nie" { + KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA + } } - } - t, _ := template.ParseFiles("placeOnline.gtpl") - checkErr(err) - type zaplac struct { - UserView string - Zaplac int - } - z := zaplac{ - UserView: User, - Zaplac: KosztBiletuSUMA} + t, _ := template.ParseFiles("placeOnline.gtpl") + checkErr(err) + type zaplac struct { + UserView string + Zaplac int + } + z := zaplac{ + UserView: User, + Zaplac: KosztBiletuSUMA} - t.ExecuteTemplate(w, "placeOnline.gtpl", z) - rows5.Close() - db.Close() + t.ExecuteTemplate(w, "placeOnline.gtpl", z) + rows5.Close() + db.Close() + } } //############################################################################# func zaplacono(w http.ResponseWriter, r *http.Request) { + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr(err) - akt, err := db.Prepare("UPDATE bilety SET CzyZaplacony=? WHERE KtoZabralID=?") - checkErr(err) - up, err := akt.Exec("tak", KtoZabralID) - checkErr(err) - dzialanie, err := up.RowsAffected() - checkErr(err) - fmt.Println(dzialanie) + akt, err := db.Prepare("UPDATE bilety SET CzyZaplacony=? WHERE KtoZabralID=?") + checkErr(err) + up, err := akt.Exec("tak", KtoZabralID) + checkErr(err) + dzialanie, err := up.RowsAffected() + checkErr(err) + fmt.Println(dzialanie) - db.Close() + db.Close() + + t, _ := template.ParseFiles("zaplacono.gtpl") + checkErr(err) + type zaplac struct { + UserView string + Zaplac int + } + z := zaplac{ + UserView: User, + Zaplac: KosztBiletuSUMA} + + t.ExecuteTemplate(w, "zaplacono.gtpl", z) - t, _ := template.ParseFiles("zaplacono.gtpl") - checkErr(err) - type zaplac struct { - UserView string - Zaplac int } - z := zaplac{ - UserView: User, - Zaplac: KosztBiletuSUMA} - - t.ExecuteTemplate(w, "zaplacono.gtpl", z) - } //############################################################################# func zmianaPINU(w http.ResponseWriter, r *http.Request) { - pinFROMsite := r.FormValue("pinFROMsite") - RFIDblockORno := r.FormValue("RFID") - - t, _ := template.ParseFiles("zmianaPINU.gtpl") - type pinIblokada struct { - UserView string - } - wykonaj := pinIblokada{ - UserView: User} - t.ExecuteTemplate(w, "zmianaPINU.gtpl", wykonaj) - - if pinFROMsite != "" { - fmt.Fprintln(w, "*** --- Pin został POMYŚLNIE ZMIENIONY! --- *** \n") - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) - - akt, err := db.Prepare("UPDATE users SET PIN=? WHERE IDusers=?") - checkErr(err) - up, err := akt.Exec(pinFROMsite, IDusers) - checkErr(err) - dzialanie, err := up.RowsAffected() - checkErr(err) - fmt.Println(dzialanie) - - db.Close() - - } - if RFIDblockORno == "RFIDblock" { - fmt.Fprintln(w, "*** --- Karta RFID została ZABLOKOWANA! --- *** \n") - - db, err := sql.Open("sqlite3", "stolowkaZPM.db") - checkErr(err) - - akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") - checkErr(err) - up, err := akt.Exec("true", IDusers) - checkErr(err) - dzialanie, err := up.RowsAffected() - checkErr(err) - fmt.Println(dzialanie) - - db.Close() - + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) } else { - if RFIDblockORno == "RFIDunlock" { - fmt.Fprintln(w, "*** --- Karta RFID została ODBLOKOWANA! --- *** \n") + pinFROMsite := r.FormValue("pinFROMsite") + RFIDblockORno := r.FormValue("RFID") + t, _ := template.ParseFiles("zmianaPINU.gtpl") + type pinIblokada struct { + UserView string + } + wykonaj := pinIblokada{ + UserView: User} + t.ExecuteTemplate(w, "zmianaPINU.gtpl", wykonaj) + + if pinFROMsite != "" { + fmt.Fprintln(w, "*** --- Pin został POMYŚLNIE ZMIENIONY! --- *** \n") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) - akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") + akt, err := db.Prepare("UPDATE users SET PIN=? WHERE IDusers=?") checkErr(err) - up, err := akt.Exec("false", IDusers) + up, err := akt.Exec(pinFROMsite, IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) @@ -388,19 +428,58 @@ func zmianaPINU(w http.ResponseWriter, r *http.Request) { db.Close() } + if RFIDblockORno == "RFIDblock" { + fmt.Fprintln(w, "*** --- Karta RFID została ZABLOKOWANA! --- *** \n") + + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr(err) + + akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") + checkErr(err) + up, err := akt.Exec("true", IDusers) + checkErr(err) + dzialanie, err := up.RowsAffected() + checkErr(err) + fmt.Println(dzialanie) + + db.Close() + + } else { + if RFIDblockORno == "RFIDunlock" { + fmt.Fprintln(w, "*** --- Karta RFID została ODBLOKOWANA! --- *** \n") + + db, err := sql.Open("sqlite3", "stolowkaZPM.db") + checkErr(err) + + akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") + checkErr(err) + up, err := akt.Exec("false", IDusers) + checkErr(err) + dzialanie, err := up.RowsAffected() + checkErr(err) + fmt.Println(dzialanie) + + db.Close() + + } + } } } //############################################################################# func zmianaHasla(w http.ResponseWriter, r *http.Request) { - //templatka przekierowuje do funkcji wylogowano - t, _ := template.ParseFiles("zmianaHasla.gtpl") - type zmhaslo struct { - UserView string + if User == "lost" { + http.Redirect(w, r, "http://localhost:9197/sesja", http.StatusSeeOther) + } else { + //templatka przekierowuje do funkcji wylogowano + t, _ := template.ParseFiles("zmianaHasla.gtpl") + type zmhaslo struct { + UserView string + } + wykonaj := zmhaslo{ + UserView: User} + t.ExecuteTemplate(w, "zmianaHasla.gtpl", wykonaj) } - wykonaj := zmhaslo{ - UserView: User} - t.ExecuteTemplate(w, "zmianaHasla.gtpl", wykonaj) } //*************************************************************************** @@ -438,6 +517,7 @@ func main() { http.HandleFunc("/menuDan", menuDan) http.HandleFunc("/zmianaPINU", zmianaPINU) http.HandleFunc("/zmianaHasla", zmianaHasla) + http.HandleFunc("/sesja", sesja) err := http.ListenAndServe(":9197", nil) if err != nil {