Move checks to separate functions
This commit is contained in:
parent
7d3718396e
commit
e11e7485f8
|
@ -33,50 +33,16 @@ func CreateUser(user *User) (newUser *User, err error) {
|
||||||
newUser.Issuer = "local"
|
newUser.Issuer = "local"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we have all needed informations
|
// Check if we have all needed information
|
||||||
if (newUser.Issuer != "local" && newUser.Subject == "") ||
|
err = checkIfUserIsValid(newUser)
|
||||||
(newUser.Issuer == "local" && (newUser.Password == "" ||
|
|
||||||
newUser.Username == "" ||
|
|
||||||
newUser.Email == "")) {
|
|
||||||
return &User{}, ErrNoUsernamePassword{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the user already existst with that username
|
|
||||||
exists := true
|
|
||||||
_, err = GetUserByUsername(newUser.Username)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if IsErrUserDoesNotExist(err) {
|
return nil, err
|
||||||
exists = false
|
|
||||||
} else {
|
|
||||||
return &User{}, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if exists {
|
|
||||||
return &User{}, ErrUsernameExists{newUser.ID, newUser.Username}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the user already existst with that email
|
// Check if the user already exists with that username
|
||||||
exists = true
|
err = checkIfUserExists(newUser)
|
||||||
userToCheck := &User{
|
|
||||||
Email: newUser.Email,
|
|
||||||
Issuer: newUser.Issuer,
|
|
||||||
Subject: newUser.Subject,
|
|
||||||
}
|
|
||||||
|
|
||||||
if newUser.Issuer != "local" {
|
|
||||||
userToCheck.Email = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = GetUser(userToCheck)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if IsErrUserDoesNotExist(err) {
|
return nil, err
|
||||||
exists = false
|
|
||||||
} else {
|
|
||||||
return &User{}, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if exists && newUser.Issuer == "local" {
|
|
||||||
return &User{}, ErrUserEmailExists{newUser.ID, newUser.Email}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if newUser.Issuer == "local" {
|
if newUser.Issuer == "local" {
|
||||||
|
@ -112,7 +78,7 @@ func CreateUser(user *User) (newUser *User, err error) {
|
||||||
return &User{}, err
|
return &User{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dont send a mail if we're testing
|
// Dont send a mail if no mailer is configured
|
||||||
if !config.MailerEnabled.GetBool() {
|
if !config.MailerEnabled.GetBool() {
|
||||||
return newUserOut, err
|
return newUserOut, err
|
||||||
}
|
}
|
||||||
|
@ -133,3 +99,55 @@ func hashPassword(password string) (string, error) {
|
||||||
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 11)
|
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 11)
|
||||||
return string(bytes), err
|
return string(bytes), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkIfUserIsValid(user *User) error {
|
||||||
|
if (user.Issuer != "local" && user.Subject == "") ||
|
||||||
|
(user.Issuer == "local" && (user.Password == "" ||
|
||||||
|
user.Username == "" ||
|
||||||
|
user.Email == "")) {
|
||||||
|
return ErrNoUsernamePassword{}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkIfUserExists(user *User) (err error) {
|
||||||
|
exists := true
|
||||||
|
_, err = GetUserByUsername(user.Username)
|
||||||
|
if err != nil {
|
||||||
|
if IsErrUserDoesNotExist(err) {
|
||||||
|
exists = false
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if exists {
|
||||||
|
return ErrUsernameExists{user.ID, user.Username}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the user already existst with that email
|
||||||
|
exists = true
|
||||||
|
userToCheck := &User{
|
||||||
|
Email: user.Email,
|
||||||
|
Issuer: user.Issuer,
|
||||||
|
Subject: user.Subject,
|
||||||
|
}
|
||||||
|
|
||||||
|
if user.Issuer != "local" {
|
||||||
|
userToCheck.Email = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = GetUser(userToCheck)
|
||||||
|
if err != nil {
|
||||||
|
if IsErrUserDoesNotExist(err) {
|
||||||
|
exists = false
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if exists && user.Issuer == "local" {
|
||||||
|
return ErrUserEmailExists{user.ID, user.Email}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user