POST /_google creates a google-based login session and sets its cookie.
()
| 27 | |
| 28 | // POST /_google creates a google-based login session and sets its cookie. |
| 29 | func (h *handler) handleGooglePOST() error { |
| 30 | err := h.checkLoginCORS() |
| 31 | if err != nil { |
| 32 | return err |
| 33 | } |
| 34 | |
| 35 | var params struct { |
| 36 | IDToken string `json:"id_token"` |
| 37 | } |
| 38 | |
| 39 | err = h.readJSONInto(¶ms) |
| 40 | if err != nil { |
| 41 | return err |
| 42 | } |
| 43 | |
| 44 | // validate the google id token |
| 45 | googleResponse, err := verifyGoogle(params.IDToken, h.server.Config.DeprecatedConfig.Google.AppClientID) |
| 46 | if err != nil { |
| 47 | return err |
| 48 | } |
| 49 | |
| 50 | createUserIfNeeded := h.server.Config.DeprecatedConfig.Google.Register |
| 51 | return h.makeSessionFromNameAndEmail(googleResponse.UserID, googleResponse.Email, createUserIfNeeded) |
| 52 | } |
| 53 | |
| 54 | func verifyGoogle(idToken string, allowedAppID []string) (*GoogleResponse, error) { |
| 55 | destUrl := googleTokenInfoURL + idToken |
nothing calls this directly
no test coverage detected