mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-08 02:25:34 +08:00
Handle unique constraint for user registration.
Returns an error if the same username or email already exists.
This commit is contained in:
@@ -183,8 +183,15 @@ func (err Error) Error() string {
|
||||
}
|
||||
}
|
||||
|
||||
var constraints = map[string]map[string]string{
|
||||
"chk_email_not_empty": map[string]string{"email": "You must provide an email address."},
|
||||
"chk_username_not_empty": map[string]string{"username": "You must provide a username."},
|
||||
"chk_password_not_empty": map[string]string{"password": "You must provide a password."},
|
||||
}
|
||||
var (
|
||||
constraints = map[string]map[string]string{
|
||||
"chk_email_not_empty": map[string]string{"email": "You must provide an email address."},
|
||||
"chk_username_not_empty": map[string]string{"username": "You must provide a username."},
|
||||
"chk_password_not_empty": map[string]string{"password": "You must provide a password."},
|
||||
}
|
||||
|
||||
constraintsUnique = map[string]map[string]string{
|
||||
"users.username": map[string]string{"username": "This username already exists."},
|
||||
"users.email": map[string]string{"email": "This email already exists."},
|
||||
}
|
||||
)
|
||||
|
||||
@@ -151,6 +151,11 @@ func checkSqlite(err error) error {
|
||||
}
|
||||
|
||||
switch sErr.Code {
|
||||
case sqlite.SQLITE_CONSTRAINT_UNIQUE:
|
||||
c := strings.Split(sErr.Msg, ": ")
|
||||
if kv, ok := constraintsUnique[c[len(c)-1]]; ok {
|
||||
return Error{invalid: kv}
|
||||
}
|
||||
case sqlite.SQLITE_CONSTRAINT_CHECK:
|
||||
c := strings.Split(sErr.Msg, ": ")
|
||||
if kv, ok := constraints[c[len(c)-1]]; ok {
|
||||
|
||||
Reference in New Issue
Block a user