Remove size from public image ID JWT

This commit is contained in:
Deluan
2023-01-11 18:14:34 -05:00
committed by Deluan Quintão
parent 8f0d002922
commit 69e0a266f4
11 changed files with 150 additions and 87 deletions
+26 -5
View File
@@ -7,6 +7,7 @@ import (
"io"
"time"
"github.com/lestrrat-go/jwx/v2/jwt"
"github.com/navidrome/navidrome/core/auth"
"github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/log"
@@ -109,10 +110,30 @@ func (a *artwork) getArtworkReader(ctx context.Context, artID model.ArtworkID, s
return artReader, err
}
func PublicLink(artID model.ArtworkID, size int) string {
token, _ := auth.CreatePublicToken(map[string]any{
"id": artID.String(),
"size": size,
})
func EncodeArtworkID(artID model.ArtworkID) string {
token, _ := auth.CreatePublicToken(map[string]any{"id": artID.String()})
return token
}
func DecodeArtworkID(tokenString string) (model.ArtworkID, error) {
token, err := auth.TokenAuth.Decode(tokenString)
if err != nil {
return model.ArtworkID{}, err
}
if token == nil {
return model.ArtworkID{}, errors.New("unauthorized")
}
err = jwt.Validate(token, jwt.WithRequiredClaim("id"))
if err != nil {
return model.ArtworkID{}, err
}
claims, err := token.AsMap(context.Background())
if err != nil {
return model.ArtworkID{}, err
}
id, ok := claims["id"].(string)
if !ok {
return model.ArtworkID{}, errors.New("invalid id type")
}
return model.ParseArtworkID(id)
}