mirror of https://github.com/writeas/writefreely
parent
6b25d79b2e
commit
bab5e42299
@ -0,0 +1,116 @@ |
||||
package author |
||||
|
||||
import ( |
||||
"github.com/writeas/writefreely/config" |
||||
"os" |
||||
"path/filepath" |
||||
"regexp" |
||||
) |
||||
|
||||
// Regex pattern for valid usernames
|
||||
var validUsernameReg = regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9-]*$") |
||||
|
||||
// List of reserved usernames
|
||||
var reservedUsernames = map[string]bool{ |
||||
"a": true, |
||||
"about": true, |
||||
"add": true, |
||||
"admin": true, |
||||
"administrator": true, |
||||
"adminzone": true, |
||||
"api": true, |
||||
"article": true, |
||||
"articles": true, |
||||
"auth": true, |
||||
"authenticate": true, |
||||
"browse": true, |
||||
"c": true, |
||||
"categories": true, |
||||
"category": true, |
||||
"changes": true, |
||||
"create": true, |
||||
"css": true, |
||||
"data": true, |
||||
"dev": true, |
||||
"developers": true, |
||||
"draft": true, |
||||
"drafts": true, |
||||
"edit": true, |
||||
"edits": true, |
||||
"faq": true, |
||||
"feed": true, |
||||
"feedback": true, |
||||
"guide": true, |
||||
"guides": true, |
||||
"help": true, |
||||
"index": true, |
||||
"js": true, |
||||
"login": true, |
||||
"logout": true, |
||||
"me": true, |
||||
"media": true, |
||||
"meta": true, |
||||
"metadata": true, |
||||
"new": true, |
||||
"news": true, |
||||
"post": true, |
||||
"posts": true, |
||||
"privacy": true, |
||||
"publication": true, |
||||
"publications": true, |
||||
"publish": true, |
||||
"random": true, |
||||
"read": true, |
||||
"reader": true, |
||||
"register": true, |
||||
"remove": true, |
||||
"signin": true, |
||||
"signout": true, |
||||
"signup": true, |
||||
"start": true, |
||||
"status": true, |
||||
"summary": true, |
||||
"support": true, |
||||
"tag": true, |
||||
"tags": true, |
||||
"team": true, |
||||
"template": true, |
||||
"templates": true, |
||||
"terms": true, |
||||
"terms-of-service": true, |
||||
"termsofservice": true, |
||||
"theme": true, |
||||
"themes": true, |
||||
"tips": true, |
||||
"tos": true, |
||||
"update": true, |
||||
"updates": true, |
||||
"user": true, |
||||
"users": true, |
||||
"yourname": true, |
||||
} |
||||
|
||||
// IsValidUsername returns true if a given username is neither reserved nor
|
||||
// of the correct format.
|
||||
func IsValidUsername(cfg *config.Config, username string) bool { |
||||
// Username has to be above a character limit
|
||||
if len(username) < cfg.App.MinUsernameLen { |
||||
return false |
||||
} |
||||
// Username is invalid if page with the same name exists. So traverse
|
||||
// available pages, adding them to reservedUsernames map that'll be checked
|
||||
// later.
|
||||
// TODO: use pagesDir const
|
||||
filepath.Walk("pages/", func(path string, i os.FileInfo, err error) error { |
||||
reservedUsernames[i.Name()] = true |
||||
return nil |
||||
}) |
||||
|
||||
// Username is invalid if it is reserved!
|
||||
if _, reserved := reservedUsernames[username]; reserved { |
||||
return false |
||||
} |
||||
|
||||
// TODO: use correct regexp function here
|
||||
return len(validUsernameReg.FindStringSubmatch(username)) > 0 |
||||
} |
Loading…
Reference in new issue