瀏覽代碼

First commit

litpooh 3 年之前
當前提交
7d7b1ddb3c
共有 4 個文件被更改,包括 131 次插入0 次删除
  1. 29 0
      files/index.html
  2. 33 0
      files/login.html
  3. 9 0
      files/logout.html
  4. 60 0
      main.go

+ 29 - 0
files/index.html

@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Index</title>
+        <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
+        </script>
+    </head>
+    <body>
+        <p>INDEX</p>
+
+    <button onclick="myFunction()">Check if user is logged in</button>
+    
+    <script>
+    function myFunction() {
+      $.ajax({
+        url: "/checklogin",
+        success: function(value){
+            var response = JSON.parse(value)
+            if (response.loggedIn == true){
+                 alert("Yes: User has logged in");
+            }else{
+                alert("No: User has not logged in yet");
+            }
+        }
+      });
+    }
+    </script>
+    </body>
+</html>

+ 33 - 0
files/login.html

@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Login</title>
+        <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
+        </script>
+    </head>
+    <body>
+      <h1>Admin Login</h1>
+      <p>Please enter your password here</p>
+      <input id="password" type="password">
+
+    <button onclick="handleLogin()">Login</button>
+    
+    <script>
+    function handleLogin() {
+      var password = $("#password").val();
+      $.ajax({
+        url: "/login",
+        data: {password: password},
+        success: function(value){
+            if (value == "true"){
+                 alert("You have logged in");
+                 window.location='/logout.html' 
+            }else{
+                alert("Incorrect Password");
+            }
+        }
+      });
+    }
+    </script>
+    </body>
+</html>

+ 9 - 0
files/logout.html

@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<title></title>
+	</head>
+	<body>
+		<h1><a href="/logout">LOG OUT</a></h1>
+	</body>
+</html>`

+ 60 - 0
main.go

@@ -0,0 +1,60 @@
+package main
+
+import (
+	"flag"
+	"log"
+	"net/http"
+)
+
+var loggedIn bool = false
+
+func checklogin() []byte {
+	if loggedIn == true {
+		return []byte(`{"loggedIn": true}`)
+	} else {
+		return []byte(`{"loggedIn": false}`)
+	}
+}
+
+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")
+			rw.Write([]byte("true"))
+			loggedIn = true
+			log.Println("Logged in")
+		} else {
+			log.Println("WRONG password!!")
+		}
+	}
+}
+
+func logoutHandler(rw http.ResponseWriter, req *http.Request) {
+	loggedIn = false
+	http.Redirect(rw, req, "/login.html", http.StatusSeeOther)
+	log.Println("Logged out successfully")
+}
+
+func checkloginHandler(rw http.ResponseWriter, req *http.Request) {
+	rw.Write(checklogin())
+	log.Println("Check button is clicked")
+}
+
+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)
+	}
+}