github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume3/section5/gopherface/common/authenticate/session.go (about) 1 package authenticate 2 3 import ( 4 "log" 5 "net/http" 6 "os" 7 8 "github.com/EngineerKamesh/gofullstack/volume3/section5/gopherface/models" 9 10 "github.com/gorilla/sessions" 11 ) 12 13 var SessionStore *sessions.FilesystemStore 14 15 func CreateUserSession(u *models.User, sessionID string, w http.ResponseWriter, r *http.Request) error { 16 17 gfSession, err := SessionStore.Get(r, "gopherface-session") 18 19 if err != nil { 20 log.Print(err) 21 } 22 23 gfSession.Values["sessionID"] = sessionID 24 gfSession.Values["username"] = u.Username 25 gfSession.Values["firstName"] = u.FirstName 26 gfSession.Values["lastName"] = u.LastName 27 gfSession.Values["email"] = u.Email 28 gfSession.Values["uuid"] = u.UUID 29 30 err = gfSession.Save(r, w) 31 if err != nil { 32 log.Print(err) 33 return err 34 } 35 36 return nil 37 } 38 39 func ExpireUserSession(w http.ResponseWriter, r *http.Request) { 40 gfSession, err := SessionStore.Get(r, "gopherface-session") 41 42 if err != nil { 43 log.Print(err) 44 } 45 46 gfSession.Options.MaxAge = -1 47 gfSession.Save(r, w) 48 } 49 50 func init() { 51 if _, err := os.Stat("/tmp/gopherface-sessions"); os.IsNotExist(err) { 52 os.Mkdir("/tmp/gopherface-sessions", 711) 53 } 54 SessionStore = sessions.NewFilesystemStore("/tmp/gopherface-sessions", []byte(os.Getenv("GOPHERFACE_HASH_KEY"))) 55 }