authExample.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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.FromEnv()
  11. var db, dbErr = dbConn.New(&appConf.Db)
  12. var (
  13. store, _ = sessionstore.NewStore(gorm.NewRepository(db), appConf.Server)
  14. )
  15. func secret(w http.ResponseWriter, r *http.Request) {
  16. session, _ := store.Get(r, "cookie-name")
  17. fmt.Println(session.Values["authenticated"])
  18. // Check if user is authenticated
  19. if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {
  20. http.Error(w, "Forbidden", http.StatusForbidden)
  21. return
  22. }
  23. // Print secret message
  24. fmt.Fprintln(w, "The cake is a lie!")
  25. }
  26. func login(w http.ResponseWriter, r *http.Request) {
  27. session, _ := store.Get(r, "cookie-name")
  28. // Authentication goes here
  29. // ...
  30. // Set user as authenticated
  31. session.Values["authenticated"] = true
  32. session.Save(r, w)
  33. }
  34. func logout(w http.ResponseWriter, r *http.Request) {
  35. session, _ := store.Get(r, "cookie-name")
  36. // Revoke users authentication
  37. session.Values["authenticated"] = false
  38. session.Save(r, w)
  39. }
  40. func main() {
  41. http.HandleFunc("/secret", secret)
  42. http.HandleFunc("/login", login)
  43. http.HandleFunc("/logout", logout)
  44. http.ListenAndServe(":8080", nil)
  45. }