user.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package aetest
  2. import (
  3. "hash/crc32"
  4. "net/http"
  5. "strconv"
  6. "google.golang.org/appengine/user"
  7. )
  8. // Login causes the provided Request to act as though issued by the given user.
  9. func Login(u *user.User, req *http.Request) {
  10. req.Header.Set("X-AppEngine-User-Email", u.Email)
  11. id := u.ID
  12. if id == "" {
  13. id = strconv.Itoa(int(crc32.Checksum([]byte(u.Email), crc32.IEEETable)))
  14. }
  15. req.Header.Set("X-AppEngine-User-Id", id)
  16. req.Header.Set("X-AppEngine-User-Federated-Identity", u.Email)
  17. req.Header.Set("X-AppEngine-User-Federated-Provider", u.FederatedProvider)
  18. if u.Admin {
  19. req.Header.Set("X-AppEngine-User-Is-Admin", "1")
  20. } else {
  21. req.Header.Set("X-AppEngine-User-Is-Admin", "0")
  22. }
  23. }
  24. // Logout causes the provided Request to act as though issued by a logged-out
  25. // user.
  26. func Logout(req *http.Request) {
  27. req.Header.Del("X-AppEngine-User-Email")
  28. req.Header.Del("X-AppEngine-User-Id")
  29. req.Header.Del("X-AppEngine-User-Is-Admin")
  30. req.Header.Del("X-AppEngine-User-Federated-Identity")
  31. req.Header.Del("X-AppEngine-User-Federated-Provider")
  32. }