aboutsummaryrefslogtreecommitdiffstats
path: root/web.go
diff options
context:
space:
mode:
Diffstat (limited to 'web.go')
-rw-r--r--web.go18
1 files changed, 8 insertions, 10 deletions
diff --git a/web.go b/web.go
index 43d3c9f..5e17b61 100644
--- a/web.go
+++ b/web.go
@@ -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",