Add author package
This commit is contained in:
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