Ejemplo n.º 1
0
// Checks if a user with that email already exists in the database. If it does,
// it returns an error, else it hashes the password, saves the new user
// and returns the user.
func (s *userService) Create(user *models.User) error {
	var err error
	user.Username = s.SanitizeUsername(user.Username)

	result, err := s.FindByUsername(user.Username)
	if err != nil {
		return err
	} else if result != nil {
		return DuplicateUsernameError
	}

	hashedPassword, err := s.EncryptPassword(user.Password)
	if err != nil {
		return err
	}

	user.Password = string(hashedPassword)
	user.Status = int(Enabled)

	err = s.db.Create(&user).Error

	if err != nil {
		return err
	}

	return nil
}