| package aetest |
| |
| import ( |
| "hash/crc32" |
| "net/http" |
| "strconv" |
| |
| "google.golang.org/appengine/user" |
| ) |
| |
| // Login causes the provided Request to act as though issued by the given user. |
| func Login(u *user.User, req *http.Request) { |
| req.Header.Set("X-AppEngine-User-Email", u.Email) |
| id := u.ID |
| if id == "" { |
| id = strconv.Itoa(int(crc32.Checksum([]byte(u.Email), crc32.IEEETable))) |
| } |
| req.Header.Set("X-AppEngine-User-Id", id) |
| req.Header.Set("X-AppEngine-User-Federated-Identity", u.Email) |
| req.Header.Set("X-AppEngine-User-Federated-Provider", u.FederatedProvider) |
| if u.Admin { |
| req.Header.Set("X-AppEngine-User-Is-Admin", "1") |
| } else { |
| req.Header.Set("X-AppEngine-User-Is-Admin", "0") |
| } |
| } |
| |
| // Logout causes the provided Request to act as though issued by a logged-out |
| // user. |
| func Logout(req *http.Request) { |
| req.Header.Del("X-AppEngine-User-Email") |
| req.Header.Del("X-AppEngine-User-Id") |
| req.Header.Del("X-AppEngine-User-Is-Admin") |
| req.Header.Del("X-AppEngine-User-Federated-Identity") |
| req.Header.Del("X-AppEngine-User-Federated-Provider") |
| } |