Skip to content

speedyhoon/session

Repository files navigation

session

Build Status Go Report Card

Go session handling for temporarily storing form data submitted via HTTP Get or Post methods. An easy way to add simple server side form validation. This implementation is designed to destroy the session contents after 2 minutes and isn't suitable for login authorisation or maintaining sessions across servers or after the process is terminated.

package main

import (
	"net/http"

	"github.com/speedyhoon/frm"
	"github.com/speedyhoon/session"
	"github.com/speedyhoon/vl"
)

const frmUpdate = 7

func updateFooBar(w http.ResponseWriter, r *http.Request) {
	// Retrieve form contents if available, else return default form values specified in getFields().
	f, _ := session.Get(w, r, getDefaultFields, frmUpdate)
	
	// Insert code here to validate input data, insert or update database etc.
	// For example: Here we are modifying the form data returned. 
	f[frmUpdate].Fields[0].Value = "foo bar"
	
	// Store the modified/updated form data. This will regenerate the session ID to prevent a CSRF attack. 
	session.Set(w, f[frmUpdate])

	//Return response or redirect to different URL
}

func getDefaultFields(formID uint8) []frm.Field {
	switch formID {
	case frmUpdate:
		return []frm.Field{
			{Name: "foo", V8: vl.Str, Required: true, Value: getDBDefaultValue()},
		}
	}
	return []frm.Field{}
}

About

Go session handling

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages