Implement Fitbit and Google Fit disconnect handlers.
authorFlorian Forster <ff@octo.it>
Tue, 30 Jan 2018 08:44:35 +0000 (09:44 +0100)
committerFlorian Forster <ff@octo.it>
Tue, 30 Jan 2018 08:45:34 +0000 (09:45 +0100)
These allow users to actively delete their tokens. This change also
includes:

* Rename the "setup" endpoints to "connect".
* Enforce authentication for the "connect" endpoints, even though they
  don't really require it. It's better to handle authentication before
  redirecting users to the OAuth screen.

kraftakt.go
templates/loggedin.html

index b49f787..1f3ac98 100644 (file)
@@ -22,11 +22,13 @@ import (
 var delayedHandleNotifications = delay.Func("handleNotifications", handleNotifications)
 
 func init() {
-       http.HandleFunc("/fitbit/setup", fitbitSetupHandler)
+       http.Handle("/fitbit/connect", AuthenticatedHandler(fitbitConnectHandler))
        http.Handle("/fitbit/grant", AuthenticatedHandler(fitbitGrantHandler))
        http.Handle("/fitbit/notify", ContextHandler(fitbitNotifyHandler))
-       http.HandleFunc("/google/setup", googleSetupHandler)
+       http.Handle("/fitbit/disconnect", AuthenticatedHandler(fitbitDisconnectHandler))
+       http.Handle("/google/connect", AuthenticatedHandler(googleConnectHandler))
        http.Handle("/google/grant", AuthenticatedHandler(googleGrantHandler))
+       http.Handle("/google/disconnect", AuthenticatedHandler(googleDisconnectHandler))
        http.Handle("/", AuthenticatedHandler(indexHandler))
 }
 
@@ -123,8 +125,9 @@ func indexHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, u
        return nil
 }
 
-func fitbitSetupHandler(w http.ResponseWriter, r *http.Request) {
+func fitbitConnectHandler(_ context.Context, w http.ResponseWriter, r *http.Request, _ *app.User) error {
        http.Redirect(w, r, fitbit.AuthURL(), http.StatusTemporaryRedirect)
+       return nil
 }
 
 func fitbitGrantHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, u *app.User) error {
index 24dd19a..6061de7 100644 (file)
@@ -18,7 +18,7 @@
             <span class="status">Disconnected</span>
           </td>
           <td class="action">
-            <a href="/fitbit/login" class="button flat">Connect</a>
+            <a href="/fitbit/connect" class="button flat">Connect</a>
           </td>
 {{end}}
         </tr>
@@ -39,7 +39,7 @@
             <span class="status">Disconnected</span>
           </td>
           <td class="action">
-            <a href="/google/login" class="button flat">Connect</a>
+            <a href="/google/connect" class="button flat">Connect</a>
           </td>
 {{endif}}
         </tr>