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) {
|
||||
paths = strings.TrimSpace(paths)
|
||||
paths = strings.TrimRight(strings.TrimSpace(paths), ",")
|
||||
|
||||
if paths == "/" {
|
||||
return true, nil
|
||||
@@ -198,7 +198,12 @@ func matchPathRule(paths, path string) (bool, error) {
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,6 +546,16 @@ func TestAuthEnabledRule(t *testing.T) {
|
||||
},
|
||||
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",
|
||||
ctx: &ACLContext{
|
||||
@@ -566,6 +576,16 @@ func TestAuthEnabledRule(t *testing.T) {
|
||||
},
|
||||
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",
|
||||
ctx: &ACLContext{
|
||||
|
||||
Reference in New Issue
Block a user