123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package main
- import (
- "encoding/json"
- "flag"
- "log"
- "net/http"
- "github.com/gorilla/sessions"
- )
- var store = sessions.NewCookieStore([]byte("secret-key"))
- type Status struct {
- LoggedIn bool
- }
- func loginHandler(rw http.ResponseWriter, req *http.Request) {
- if req.Method == "GET" {
- password := req.FormValue("password")
- log.Println("The typed password is:" + password)
- if password == "admin" {
- log.Println("Password is correct")
- session, err := store.Get(req, "session-name")
- if err != nil {
- http.Error(rw, err.Error(), http.StatusInternalServerError)
- return
- }
- session.Values["auth"] = true
- err = session.Save(req, rw)
- if err != nil {
- http.Error(rw, err.Error(), http.StatusInternalServerError)
- return
- }
- rw.Write([]byte("true"))
- log.Println("Logged in")
- } else {
- log.Println("WRONG password!!")
- }
- }
- }
- func logoutHandler(rw http.ResponseWriter, req *http.Request) {
- session, err := store.Get(req, "session-name")
- if err != nil {
- http.Error(rw, err.Error(), http.StatusInternalServerError)
- return
- }
- session.Values["auth"] = nil
- err = session.Save(req, rw)
- if err != nil {
- http.Error(rw, err.Error(), http.StatusInternalServerError)
- return
- }
- http.Redirect(rw, req, "/login.html", http.StatusSeeOther)
- log.Println("Logged out successfully")
- }
- func checkloginHandler(rw http.ResponseWriter, req *http.Request) {
- log.Println("Check button is clicked")
- session, err := store.Get(req, "session-name")
- if err != nil {
- http.Error(rw, err.Error(), http.StatusInternalServerError)
- return
- }
- var result Status
- if session.Values["auth"] == true {
- log.Println("Checked that auth = true")
- result.LoggedIn = true
- } else {
- log.Println("Checked that auth = false")
- result.LoggedIn = false
- }
- send_message, _ := json.Marshal(result)
- rw.Write(send_message)
- }
- func main() {
- portPointer := flag.String("port", "8000", "An integer")
- flag.Parse()
- log.Println("Port Number: " + *portPointer)
- httpFileServer := http.FileServer(http.Dir("./files"))
- http.Handle("/", httpFileServer)
- http.HandleFunc("/login", loginHandler)
- http.HandleFunc("/logout", logoutHandler)
- http.HandleFunc("/checklogin", checkloginHandler)
- log.Printf("Listening http://localhost:%s\n", *portPointer)
- if error := http.ListenAndServe(":"+*portPointer, nil); error != nil {
- log.Printf("Error: %s\n", error)
- }
- }
|