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  }