authExample.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/porter-dev/porter/internal/config"
  6. "github.com/porter-dev/porter/internal/repository/gorm"
  7. dbConn "github.com/porter-dev/porter/internal/adapter"
  8. sessionstore "github.com/porter-dev/porter/internal/auth"
  9. )
  10. var appConf = config.AppConfig()
  11. var db, dbErr = dbConn.New(&appConf.Db)
  12. var (
  13. key = []byte("secret") // change to os.Getenv("SESSION_KEY")
  14. store, _ = sessionstore.NewStore(gorm.NewRepository(db), key)
  15. )
  16. func secret(w http.ResponseWriter, r *http.Request) {
  17. session, _ := store.Get(r, "cookie-name")
  18. fmt.Println(session.Values["authenticated"])
  19. // Check if user is authenticated
  20. if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {
  21. http.Error(w, "Forbidden", http.StatusForbidden)
  22. return
  23. }
  24. // Print secret message
  25. fmt.Fprintln(w, "The cake is a lie!")
  26. }
  27. func login(w http.ResponseWriter, r *http.Request) {
  28. session, _ := store.Get(r, "cookie-name")
  29. // Authentication goes here
  30. // ...
  31. // Set user as authenticated
  32. session.Values["authenticated"] = true
  33. session.Save(r, w)
  34. }
  35. func logout(w http.ResponseWriter, r *http.Request) {
  36. session, _ := store.Get(r, "cookie-name")
  37. // Revoke users authentication
  38. session.Values["authenticated"] = false
  39. session.Save(r, w)
  40. }
  41. func main() {
  42. http.HandleFunc("/secret", secret)
  43. http.HandleFunc("/login", login)
  44. http.HandleFunc("/logout", logout)
  45. http.ListenAndServe(":8080", nil)
  46. }