An atproto PDS written in Go
at main 1.1 kB view raw
1package server 2 3import ( 4 "github.com/haileyok/cocoon/internal/helpers" 5 "github.com/labstack/echo/v4" 6) 7 8type AccountRevokeRequest struct { 9 Token string `form:"token"` 10} 11 12func (s *Server) handleAccountRevoke(e echo.Context) error { 13 var req AccountRevokeRequest 14 if err := e.Bind(&req); err != nil { 15 s.logger.Error("could not bind account revoke request", "error", err) 16 return helpers.ServerError(e, nil) 17 } 18 19 repo, sess, err := s.getSessionRepoOrErr(e) 20 if err != nil { 21 return e.Redirect(303, "/account/signin") 22 } 23 24 if err := s.db.Exec("DELETE FROM oauth_tokens WHERE sub = ? AND token = ?", nil, repo.Repo.Did, req.Token).Error; err != nil { 25 s.logger.Error("couldnt delete oauth session for account", "did", repo.Repo.Did, "token", req.Token, "error", err) 26 sess.AddFlash("Unable to revoke session. See server logs for more details.", "error") 27 sess.Save(e.Request(), e.Response()) 28 return e.Redirect(303, "/account") 29 } 30 31 sess.AddFlash("Session successfully revoked!", "success") 32 sess.Save(e.Request(), e.Response()) 33 return e.Redirect(303, "/account") 34}