mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-14 11:17:19 +03:00
Add path to cookies. Fix #1580
This commit is contained in:
parent
0ffdb2eee0
commit
aac6e2cb07
@ -11,6 +11,8 @@ import (
|
|||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
"github.com/go-chi/cors"
|
"github.com/go-chi/cors"
|
||||||
|
"github.com/navidrome/navidrome/conf"
|
||||||
|
. "github.com/navidrome/navidrome/utils/gg"
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5/middleware"
|
"github.com/go-chi/chi/v5/middleware"
|
||||||
"github.com/navidrome/navidrome/consts"
|
"github.com/navidrome/navidrome/consts"
|
||||||
@ -129,7 +131,7 @@ func clientUniqueIDMiddleware(next http.Handler) http.Handler {
|
|||||||
HttpOnly: true,
|
HttpOnly: true,
|
||||||
Secure: true,
|
Secure: true,
|
||||||
SameSite: http.SameSiteStrictMode,
|
SameSite: http.SameSiteStrictMode,
|
||||||
Path: "/",
|
Path: IfZero(conf.Server.BaseURL, "/"),
|
||||||
}
|
}
|
||||||
http.SetCookie(w, c)
|
http.SetCookie(w, c)
|
||||||
} else {
|
} else {
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ua "github.com/mileusna/useragent"
|
ua "github.com/mileusna/useragent"
|
||||||
|
"github.com/navidrome/navidrome/conf"
|
||||||
"github.com/navidrome/navidrome/consts"
|
"github.com/navidrome/navidrome/consts"
|
||||||
"github.com/navidrome/navidrome/core"
|
"github.com/navidrome/navidrome/core"
|
||||||
"github.com/navidrome/navidrome/core/auth"
|
"github.com/navidrome/navidrome/core/auth"
|
||||||
@ -20,6 +21,7 @@ import (
|
|||||||
"github.com/navidrome/navidrome/model/request"
|
"github.com/navidrome/navidrome/model/request"
|
||||||
"github.com/navidrome/navidrome/server/subsonic/responses"
|
"github.com/navidrome/navidrome/server/subsonic/responses"
|
||||||
"github.com/navidrome/navidrome/utils"
|
"github.com/navidrome/navidrome/utils"
|
||||||
|
. "github.com/navidrome/navidrome/utils/gg"
|
||||||
)
|
)
|
||||||
|
|
||||||
func postFormToQueryParams(next http.Handler) http.Handler {
|
func postFormToQueryParams(next http.Handler) http.Handler {
|
||||||
@ -164,7 +166,7 @@ func getPlayer(players core.Players) func(next http.Handler) http.Handler {
|
|||||||
MaxAge: consts.CookieExpiry,
|
MaxAge: consts.CookieExpiry,
|
||||||
HttpOnly: true,
|
HttpOnly: true,
|
||||||
SameSite: http.SameSiteStrictMode,
|
SameSite: http.SameSiteStrictMode,
|
||||||
Path: "/",
|
Path: IfZero(conf.Server.BaseURL, "/"),
|
||||||
}
|
}
|
||||||
http.SetCookie(w, cookie)
|
http.SetCookie(w, cookie)
|
||||||
}
|
}
|
||||||
|
14
utils/gg/gg.go
Normal file
14
utils/gg/gg.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Package gg implements simple "extensions" to Go language. Based on https://github.com/icza/gog
|
||||||
|
package gg
|
||||||
|
|
||||||
|
// IfZero returns v if it is a non-zero value, orElse otherwise.
|
||||||
|
//
|
||||||
|
// This is similar to elvis operator (?:) in Groovy and other languages.
|
||||||
|
// Note: Different from the real elvis operator, the orElse expression will always get evaluated.
|
||||||
|
func IfZero[T comparable](v T, orElse T) T {
|
||||||
|
var zero T
|
||||||
|
if v != zero {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return orElse
|
||||||
|
}
|
43
utils/gg/gg_test.go
Normal file
43
utils/gg/gg_test.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package gg_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/navidrome/navidrome/tests"
|
||||||
|
"github.com/navidrome/navidrome/utils/gg"
|
||||||
|
. "github.com/onsi/ginkgo/v2"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGG(t *testing.T) {
|
||||||
|
tests.Init(t, false)
|
||||||
|
RegisterFailHandler(Fail)
|
||||||
|
RunSpecs(t, "GG Suite")
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ = Describe("IfZero", func() {
|
||||||
|
DescribeTable("string",
|
||||||
|
func(v, orElse, expected string) {
|
||||||
|
Expect(gg.IfZero(v, orElse)).To(Equal(expected))
|
||||||
|
},
|
||||||
|
Entry("zero value", "", "default", "default"),
|
||||||
|
Entry("non-zero value", "anything", "default", "anything"),
|
||||||
|
)
|
||||||
|
DescribeTable("numeric",
|
||||||
|
func(v, orElse, expected int) {
|
||||||
|
Expect(gg.IfZero(v, orElse)).To(Equal(expected))
|
||||||
|
},
|
||||||
|
Entry("zero value", 0, 2, 2),
|
||||||
|
Entry("non-zero value", -1, 2, -1),
|
||||||
|
)
|
||||||
|
type testStruct struct {
|
||||||
|
field1 int
|
||||||
|
}
|
||||||
|
DescribeTable("struct",
|
||||||
|
func(v, orElse, expected testStruct) {
|
||||||
|
Expect(gg.IfZero(v, orElse)).To(Equal(expected))
|
||||||
|
},
|
||||||
|
Entry("zero value", testStruct{}, testStruct{123}, testStruct{123}),
|
||||||
|
Entry("non-zero value", testStruct{456}, testStruct{123}, testStruct{456}),
|
||||||
|
)
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user