diff --git a/shared/constants.go b/shared/constants.go index a3d6a41..937d84e 100644 --- a/shared/constants.go +++ b/shared/constants.go @@ -8,5 +8,6 @@ const ( // where multiple releases in a day are required Version = "0.0.1 pre-alpha" // Username for the server actor - ServerActorName = "server.actor" + ServerActorName = "server.actor" + FeedUsernameSuffix = "-feed" ) diff --git a/shared/validation.go b/shared/validation.go new file mode 100644 index 0000000..eb72dbc --- /dev/null +++ b/shared/validation.go @@ -0,0 +1,25 @@ +package shared + +import ( + "strings" + + "git.mstar.dev/mstar/goutils/sliceutils" +) + +var forbiddenUsernames = []string{ + "server.actor", + "feed", +} + +// Reports whether a given user name is valid (for non-internal systems) +// +// TODO: Include compat check for Mastodon? +func ValidateUsername(username string) bool { + if strings.HasSuffix(username, FeedUsernameSuffix) { + return false + } + if sliceutils.Contains(forbiddenUsernames, username) { + return false + } + return true +}