aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/validate/username.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/validate/username.go')
-rw-r--r--internal/validate/username.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/internal/validate/username.go b/internal/validate/username.go
new file mode 100644
index 00000000..2249cd27
--- /dev/null
+++ b/internal/validate/username.go
@@ -0,0 +1,12 @@
+package validate
+
+import "regexp"
+
+// nameRegex is the default NAME_REGEX value from adduser.
+var nameRegex = regexp.MustCompilePOSIX(`^[a-zA-Z][a-zA-Z0-9_-]*\$?$`)
+
+// IsValidUsername returns whether the argument is a valid username.
+func IsValidUsername(username string) bool {
+ return len(username) < Sysconf(SC_LOGIN_NAME_MAX) &&
+ nameRegex.MatchString(username)
+}