// CreateAndLogin does the following: // // - Search for an existing user - session -> Profile -> email address // - Saves the Profile to the datastore // - Creates a User or appends the AuthID to the Requesting user's account // - Logs in the User // - Adds the admin role to the User if they are an GAE Admin. func CreateAndLogin(w http.ResponseWriter, r *http.Request, p *profile.Profile) (u *user.User, err error) { c := context.NewContext(r) if u, err = p.UpdateUser(w, r); err != nil { return } if err = user.CurrentUserSetID(w, r, p.UserID); err != nil { return } err = p.Put(c) return }