Refactored user functions to use refrences rather than values

This commit is contained in:
walkerwmanuel
2022-12-20 15:10:40 -05:00
parent e48abd3318
commit 71d66b7f93
11 changed files with 68 additions and 103 deletions

View File

@@ -81,20 +81,20 @@ func GetUsers() ([]models.ReturnUser, error) {
}
// CreateUser - creates a user
func CreateUser(user models.User) (models.User, error) {
func CreateUser(user *models.User) error {
// check if user exists
if _, err := GetUser(user.UserName); err == nil {
return models.User{}, errors.New("user exists")
return errors.New("user exists")
}
var err = ValidateUser(user)
if err != nil {
return models.User{}, err
return err
}
// encrypt that password so we never see it again
hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), 5)
if err != nil {
return user, err
return err
}
// set password to encrypted password
user.Password = string(hash)
@@ -102,19 +102,19 @@ func CreateUser(user models.User) (models.User, error) {
tokenString, _ := CreateProUserJWT(user.UserName, user.Networks, user.Groups, user.IsAdmin)
if tokenString == "" {
// logic.ReturnErrorResponse(w, r, errorResponse)
return user, err
return err
}
SetUserDefaults(&user)
SetUserDefaults(user)
// connect db
data, err := json.Marshal(&user)
data, err := json.Marshal(user)
if err != nil {
return user, err
return err
}
err = database.Insert(user.UserName, string(data), database.USERS_TABLE_NAME)
if err != nil {
return user, err
return err
}
// == PRO == Add user to every network as network user ==
@@ -153,17 +153,17 @@ func CreateUser(user models.User) (models.User, error) {
}
// == END PRO ==
return user, nil
return nil
}
// CreateAdmin - creates an admin user
func CreateAdmin(admin models.User) (models.User, error) {
func CreateAdmin(admin *models.User) error {
hasadmin, err := HasAdmin()
if err != nil {
return models.User{}, err
return err
}
if hasadmin {
return models.User{}, errors.New("admin user already exists")
return errors.New("admin user already exists")
}
admin.IsAdmin = true
return CreateUser(admin)
@@ -242,22 +242,24 @@ func UpdateUserNetworks(newNetworks, newGroups []string, isadmin bool, currentUs
currentUser.Networks = newNetworks
}
_, err = UpdateUser(models.User{
userChange := models.User{
UserName: currentUser.UserName,
Networks: currentUser.Networks,
IsAdmin: currentUser.IsAdmin,
Password: "",
Groups: currentUser.Groups,
}, returnedUser)
}
_, err = UpdateUser(&userChange, returnedUser)
return err
}
// UpdateUser - updates a given user
func UpdateUser(userchange models.User, user models.User) (models.User, error) {
func UpdateUser(userchange, user *models.User) (*models.User, error) {
// check if user exists
if _, err := GetUser(user.UserName); err != nil {
return models.User{}, err
return &models.User{}, err
}
queryUser := user.UserName
@@ -290,25 +292,25 @@ func UpdateUser(userchange models.User, user models.User) (models.User, error) {
err := ValidateUser(user)
if err != nil {
return models.User{}, err
return &models.User{}, err
}
if err = database.DeleteRecord(database.USERS_TABLE_NAME, queryUser); err != nil {
return models.User{}, err
return &models.User{}, err
}
data, err := json.Marshal(&user)
if err != nil {
return models.User{}, err
return &models.User{}, err
}
if err = database.Insert(user.UserName, string(data), database.USERS_TABLE_NAME); err != nil {
return models.User{}, err
return &models.User{}, err
}
logger.Log(1, "updated user", queryUser)
return user, nil
}
// ValidateUser - validates a user model
func ValidateUser(user models.User) error {
func ValidateUser(user *models.User) error {
v := validator.New()
_ = v.RegisterValidation("in_charset", func(fl validator.FieldLevel) bool {