url-whitelist can create whitelists by including and excluding url patterns and check urls against them
see url-pattern for supported url patterns
npm install url-whitelist
newWhitelist = require 'url-whitelist'
make a new whitelist
whitelist = newWhitelist()
whitelist a url pattern
check whether urls are on the whitelist
whitelist.check '/users/1' # => true whitelist.check '/projects/1' # => false
by default a whitelist excludes everything. you can include everything by default and then selectively exclude patterns.
blacklist = newWhitelist() blacklist.include '*' blacklist.exclude '/users/:id' blacklist.check 'sajdflkasjdfl' # => true blacklist.check '/users/:id' # => false blacklist.check 'skljdf' # => true
/projects/* except for
newWhitelist = require 'url-whitelist' whitelist = newWhitelist() whitelist.include '/projects/*' whitelist.exclude '/projects/hidden/*' whitelist.exclude '/projects/:id/secret' whitelist.include '/users/:id' whitelist.check '/projects/foo/bar/baz' # => true whitelist.check '/projects/hidden/bar/baz' # => false whitelist.check '/projects/5/secret' # => false whitelist.check '/projects/5/secret/foo' # => true whitelist.check '/users' # => false whitelist.check '/users/5' # => true whitelist.check '/tasks/57' # => false
how check works (pseudocode)
whitelisted = false go through all include- and exclude-patterns in the order they were defined: if url matches pattern if is include whitelisted = true else whitelisted = false