コード例 #1
0
ファイル: handlers.go プロジェクト: scyth/go-webproject
// loginPage authenticates users
func loginPage(writer http.ResponseWriter, req *http.Request) {
	// here we define some static record for comparison
	valid_user := "******"
	valid_pass := "******"

	if req.FormValue("user") == valid_user && req.FormValue("pass") == valid_pass {
		sess, _ := mod_sessions.CheckSession(req, writer)
		sess.Values["session_id"] = sess.ID // we set this to indicate we're logged in.
		mod_sessions.Save(req, writer, sess)
		http.Redirect(writer, req, "/", http.StatusFound)
		return
	}
	http.Redirect(writer, req, "/?error=login", http.StatusFound)
	return
}
コード例 #2
0
ファイル: handlers.go プロジェクト: scyth/go-webproject
// indexPage() is a handler which will load some template and send the result back to the client
func indexPage(writer http.ResponseWriter, req *http.Request) {
	tpl, err := gwp_template.Load(ctx, "index.html")
	if err != nil {
		http.Error(writer, err.Error(), http.StatusInternalServerError)
		return
	}

	var displayContent bool

	// if session parameter "session_id" is present, we already have session set and we can show the content
	// otherwise, we will display login form
	sess, ok := mod_sessions.CheckSession(req, writer, "session_id")
	if ok {
		displayContent = true
	} else {
		displayContent = false
	}

	var s_id string
	if sid, ok := sess.Values["session_id"]; ok {
		s_id = sid.(string)
	} else {
		s_id = sess.ID
	}

	errmsg := req.FormValue("error")
	var msg string
	if errmsg == "login" {
		msg = "Invalid login"
	}

	mydata := Example{ID: s_id, Name: "Joe", LoggedIn: displayContent, ErrorMsg: msg}
	buff := new(bytes.Buffer)

	tpl.Execute(buff, mydata)
	writer.Write(buff.Bytes())
}