mirror of
https://github.com/tinyauthapp/tinyauth.git
synced 2026-08-11 19:43:43 +08:00
handle edge cases
This commit is contained in:
@@ -182,7 +182,7 @@ type AuthEnabledRule struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func matchPathRule(paths, path string) (bool, error) {
|
func matchPathRule(paths, path string) (bool, error) {
|
||||||
paths = strings.TrimSpace(paths)
|
paths = strings.TrimRight(strings.TrimSpace(paths), ",")
|
||||||
|
|
||||||
if paths == "/" {
|
if paths == "/" {
|
||||||
return true, nil
|
return true, nil
|
||||||
@@ -198,7 +198,12 @@ func matchPathRule(paths, path string) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, configuredPath := range strings.Split(paths, ",") {
|
for _, configuredPath := range strings.Split(paths, ",") {
|
||||||
if strings.HasPrefix(path, strings.TrimSpace(configuredPath)) {
|
configuredPath = strings.TrimSpace(configuredPath)
|
||||||
|
if configuredPath == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(path, configuredPath) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -546,6 +546,16 @@ func TestAuthEnabledRule(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: EffectAllow,
|
expected: EffectAllow,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "allows when comma-separated allow paths have trailing whitespace and commas",
|
||||||
|
ctx: &ACLContext{
|
||||||
|
ACLs: &model.App{
|
||||||
|
Path: model.AppPath{Allow: " /bar,/foo/bar,/hello, , "},
|
||||||
|
},
|
||||||
|
Path: "/foo/bar/baz",
|
||||||
|
},
|
||||||
|
expected: EffectAllow,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "allows when path matches allow regex",
|
name: "allows when path matches allow regex",
|
||||||
ctx: &ACLContext{
|
ctx: &ACLContext{
|
||||||
@@ -566,6 +576,16 @@ func TestAuthEnabledRule(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: EffectDeny,
|
expected: EffectDeny,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "denies when allow paths contain only whitespace and commas",
|
||||||
|
ctx: &ACLContext{
|
||||||
|
ACLs: &model.App{
|
||||||
|
Path: model.AppPath{Allow: " , , "},
|
||||||
|
},
|
||||||
|
Path: "/anything",
|
||||||
|
},
|
||||||
|
expected: EffectDeny,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "denies when path does not match allow path",
|
name: "denies when path does not match allow path",
|
||||||
ctx: &ACLContext{
|
ctx: &ACLContext{
|
||||||
|
|||||||
Reference in New Issue
Block a user