Skip to content

Commit

Permalink
jwk: Rename key deletion param to before
Browse files Browse the repository at this point in the history
Signed-off-by: Shota Sawada <xiootas@gmail.com>
  • Loading branch information
sawadashota committed Oct 3, 2019
1 parent 3e8f5d4 commit c4fe07e
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 12 deletions.
4 changes: 4 additions & 0 deletions jwk/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ type swaggerJwkSetQuery struct {
// in: path
// required: true
Set string `json:"set"`

// A unix timestamp to delete all old keys created before the time
// in: query
Before int64 `json:"before"`
}

// swagger:model JSONWebKeySet
Expand Down
12 changes: 5 additions & 7 deletions jwk/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,14 @@ import (
"encoding/json"
"fmt"
"net/http"
"time"

"github.com/ory/x/stringslice"

"github.com/ory/hydra/x"

"github.com/julienschmidt/httprouter"
"github.com/pkg/errors"
jose "gopkg.in/square/go-jose.v2"
"gopkg.in/square/go-jose.v2"
)

const (
Expand Down Expand Up @@ -328,17 +327,16 @@ func (h *Handler) UpdateKey(w http.ResponseWriter, r *http.Request, ps httproute
// 500: genericError
func (h *Handler) DeleteKeySet(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
var setName = ps.ByName("set")
var olderThan = r.URL.Query().Get("older-than")

if olderThan != "" {
date, err := time.Parse("2006-01-02", olderThan)
var paramBefore = r.URL.Query().Get("before")

if paramBefore != "" {
before, err := parseUnixTimestampParam(paramBefore)
if err != nil {
h.r.Writer().WriteError(w, r, err)
return
}

if err := h.r.KeyManager().DeleteOldKeys(r.Context(), setName, date); err != nil {
if err := h.r.KeyManager().DeleteOldKeys(r.Context(), setName, before); err != nil {
h.r.Writer().WriteError(w, r, err)
return
}
Expand Down
12 changes: 12 additions & 0 deletions jwk/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import (
"crypto/x509"
"encoding/pem"
"fmt"
"strconv"
"time"

"github.com/ory/hydra/x"

Expand Down Expand Up @@ -155,3 +157,13 @@ func Ider(typ, id string) string {
}
return fmt.Sprintf("%s:%s", typ, id)
}

func parseUnixTimestampParam(param string) (t time.Time, err error) {
unixTimestamp, err := strconv.Atoi(param)
if err != nil {
return
}

return time.Unix(int64(unixTimestamp), 0), nil

}
2 changes: 1 addition & 1 deletion jwk/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ type Manager interface {

DeleteKey(ctx context.Context, set, kid string) error

DeleteOldKeys(ctx context.Context, set string, date time.Time) error
DeleteOldKeys(ctx context.Context, set string, before time.Time) error

DeleteKeySet(ctx context.Context, set string) error
}
4 changes: 2 additions & 2 deletions jwk/manager_memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func (m *MemoryManager) DeleteKey(ctx context.Context, set, kid string) error {
return nil
}

func (m *MemoryManager) DeleteOldKeys(ctx context.Context, set string, date time.Time) error {
func (m *MemoryManager) DeleteOldKeys(ctx context.Context, set string, before time.Time) error {
keys, err := m.getKeySet(ctx, set)
if err != nil {
return err
Expand All @@ -180,7 +180,7 @@ func (m *MemoryManager) DeleteOldKeys(ctx context.Context, set string, date time

var results []jsonWebKey
for _, key := range keys.keys {
if key.createdAt.After(date) {
if key.createdAt.After(before) {
results = append(results, key)
}
}
Expand Down
4 changes: 2 additions & 2 deletions jwk/manager_sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,8 @@ func (m *SQLManager) DeleteKey(ctx context.Context, set, kid string) error {
return nil
}

func (m *SQLManager) DeleteOldKeys(ctx context.Context, set string, date time.Time) error {
if _, err := m.DB.ExecContext(ctx, m.DB.Rebind(`DELETE FROM hydra_jwk WHERE sid=? AND created_at < ?`), set, date.Format("2006-01-02")); err != nil {
func (m *SQLManager) DeleteOldKeys(ctx context.Context, set string, before time.Time) error {
if _, err := m.DB.ExecContext(ctx, m.DB.Rebind(`DELETE FROM hydra_jwk WHERE sid=? AND created_at < ?`), set, before.Format(time.RFC3339)); err != nil {
return sqlcon.HandleError(err)
}
return nil
Expand Down

0 comments on commit c4fe07e

Please sign in to comment.