func (a Authorizer) AddUser(user models.User, password string) error { if user.Username == "" { logger.Get().Error("no user name given") return mkerror("no username given") } if user.Email == "" { logger.Get().Error("no email given") return mkerror("no email given") } if password == "" { logger.Get().Error("no password given") return mkerror("no password given") } //Set the usertype to internal user.Type = authprovider.Internal user.Status = true // Validate username _, err := a.userDao.User(user.Username) if err == nil { logger.Get().Error("Username: %s already exists", user.Username) return mkerror("user already exists") } else if err.Error() != ErrMissingUser.Error() { if err != nil { logger.Get().Error("Error retrieving user: %s. error: %v", user.Username, err) return mkerror(err.Error()) } return nil } // Generate and save hash hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { logger.Get().Error("couldn't save password for user: %s. error: %v", user.Username, err) return mkerror("couldn't save password: "******"" { user.Role = a.defaultRole } else { if _, ok := a.roles[user.Role]; !ok { logger.Get().Error("Non Existing Role: %s", user.Role) return mkerror("non-existant role") } } err = a.userDao.SaveUser(user) if err != nil { logger.Get().Error("Erro Saving the User: %s. error: %v", user, err) return mkerror(err.Error()) } return nil }