A fork of the Cocoon PDS but being made more distributed.
0

Configure Feed

Select the types of activity you want to include in your feed.

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