package server import ( "github.com/haileyok/cocoon/internal/helpers" "github.com/haileyok/cocoon/models" "github.com/labstack/echo/v4" ) type ComAtprotoServerRefreshSessionResponse struct { AccessJwt string `json:"accessJwt"` RefreshJwt string `json:"refreshJwt"` Handle string `json:"handle"` Did string `json:"did"` Active bool `json:"active"` Status *string `json:"status,omitempty"` } func (s *Server) handleRefreshSession(e echo.Context) error { token := e.Get("token").(string) repo := e.Get("repo").(*models.RepoActor) if err := s.db.Exec("DELETE FROM refresh_tokens WHERE token = ?", nil, token).Error; err != nil { s.logger.Error("error getting refresh token from db", "error", err) return helpers.ServerError(e, nil) } if err := s.db.Exec("DELETE FROM tokens WHERE refresh_token = ?", nil, token).Error; err != nil { s.logger.Error("error deleting access token from db", "error", err) return helpers.ServerError(e, nil) } sess, err := s.createSession(&repo.Repo) if err != nil { s.logger.Error("error creating new session for refresh", "error", err) return helpers.ServerError(e, nil) } return e.JSON(200, ComAtprotoServerRefreshSessionResponse{ AccessJwt: sess.AccessToken, RefreshJwt: sess.RefreshToken, Handle: repo.Handle, Did: repo.Repo.Did, Active: true, Status: nil, }) }