Fix/cookie host (#76)
* fix: cookie host * feat: add test for url utils * fix: url test * fix: multi domain cookie if allowed
This commit is contained in:
parent
74a551ae09
commit
00565c8717
4
Makefile
4
Makefile
|
@ -4,4 +4,6 @@ VERSION := $(or $(VERSION),$(DEFAULT_VERSION))
|
|||
cmd:
|
||||
cd server && go build -ldflags "-w -X main.Version=$(VERSION)" -o '../build/server'
|
||||
clean:
|
||||
rm -rf build
|
||||
rm -rf build
|
||||
test:
|
||||
cd server && go test ./...
|
|
@ -40,7 +40,7 @@ func processGoogleUserInfo(code string) (db.User, error) {
|
|||
// Parse and verify ID Token payload.
|
||||
idToken, err := verifier.Verify(ctx, rawIDToken)
|
||||
if err != nil {
|
||||
return user, fmt.Errorf("unable to verify id_token:", err.Error())
|
||||
return user, fmt.Errorf("unable to verify id_token: %s", err.Error())
|
||||
}
|
||||
|
||||
// Extract custom claims
|
||||
|
|
|
@ -11,9 +11,14 @@ func SetCookie(gc *gin.Context, token string) {
|
|||
secure := true
|
||||
httpOnly := true
|
||||
host := GetHostName(constants.AUTHORIZER_URL)
|
||||
domain := GetDomainName(constants.AUTHORIZER_URL)
|
||||
if domain != "localhost" {
|
||||
domain = "." + domain
|
||||
}
|
||||
|
||||
gc.SetSameSite(http.SameSiteNoneMode)
|
||||
gc.SetCookie(constants.COOKIE_NAME, token, 3600, "/", host, secure, httpOnly)
|
||||
gc.SetCookie(constants.COOKIE_NAME+"-client", token, 3600, "/", domain, secure, httpOnly)
|
||||
}
|
||||
|
||||
func GetCookie(gc *gin.Context) (string, error) {
|
||||
|
@ -29,8 +34,13 @@ func DeleteCookie(gc *gin.Context) {
|
|||
secure := true
|
||||
httpOnly := true
|
||||
|
||||
host := GetHostName(constants.AUTHORIZER_URL)
|
||||
host := GetDomainName(constants.AUTHORIZER_URL)
|
||||
domain := GetDomainName(constants.AUTHORIZER_URL)
|
||||
if domain != "localhost" {
|
||||
domain = "." + domain
|
||||
}
|
||||
|
||||
gc.SetSameSite(http.SameSiteNoneMode)
|
||||
gc.SetCookie(constants.COOKIE_NAME, "", -1, "/", host, secure, httpOnly)
|
||||
gc.SetCookie(constants.COOKIE_NAME+"-client", "", -1, "/", domain, secure, httpOnly)
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ func GetHostName(auth_url string) string {
|
|||
return host
|
||||
}
|
||||
|
||||
// function to get domain name
|
||||
// GetDomainName function to get domain name
|
||||
func GetDomainName(auth_url string) string {
|
||||
u, err := url.Parse(auth_url)
|
||||
if err != nil {
|
||||
|
|
25
server/utils/urls_test.go
Normal file
25
server/utils/urls_test.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package utils
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestGetHostName(t *testing.T) {
|
||||
authorizer_url := "http://test.herokuapp.com"
|
||||
|
||||
got := GetHostName(authorizer_url)
|
||||
want := "test.herokuapp.com"
|
||||
|
||||
if got != want {
|
||||
t.Errorf("GetHostName Test failed got %s, wanted %s", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetDomainName(t *testing.T) {
|
||||
authorizer_url := "http://test.herokuapp.com"
|
||||
|
||||
got := GetDomainName(authorizer_url)
|
||||
want := "herokuapp.com"
|
||||
|
||||
if got != want {
|
||||
t.Errorf("GetHostName Test failed got %q, wanted %q", got, want)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user