diff options
Diffstat (limited to 'web.go')
| -rw-r--r-- | web.go | 18 |
1 files changed, 8 insertions, 10 deletions
@@ -54,33 +54,31 @@ func (app *App) root(w http.ResponseWriter, r *http.Request) { } func (app *App) callback(w http.ResponseWriter, r *http.Request) { - redir := func(err error) { - if err != nil { + defer func() { + if rec := recover(); rec != nil { http.Redirect(w, r, "/login", http.StatusFound) - log.Panic(err) + log.Println(rec) } - } + }() var state string app.GetCookie(r, "state", &state) if state == "" || state != r.FormValue("state") { - redir(fmt.Errorf("state")) + panic(fmt.Errorf("state")) } code := r.FormValue("code") - tok, err := app.Config.OAuth.Exchange(context.Background(), code) - redir(err) + tok, _ := app.Config.OAuth.Exchange(context.Background(), code) client := app.Config.OAuth.Client(context.Background(), tok) resp, _ := client.Get("https://www.googleapis.com/plus/v1/people/me/openIdConnect") p, _ := ioutil.ReadAll(resp.Body) userinfo := new(UserInfo) - err = json.Unmarshal(p, userinfo) - redir(err) + json.Unmarshal(p, userinfo) se := new(UserSession) se.Id = hex.EncodeToString(genKey(32)) row := app.DB.QueryRow("SELECT user_id, name FROM users WHERE type='google' AND op_id=$1", userinfo.Sub) - err = row.Scan(&se.UserId, &se.UserName) + err := row.Scan(&se.UserId, &se.UserName) if err != nil { row := app.DB.QueryRow("INSERT into users (type, op_id, name, email)"+ "values ('google', $1, $2, $3) RETURNING user_id", |
