package lishwist import ( "errors" "fmt" "golang.org/x/crypto/bcrypt" ) func Register(username, newPassword string) error { if username == "" { return errors.New("Username required") } if newPassword == "" { return errors.New("newPassword required") } existingUser, _ := getUserByName(username) if existingUser != nil { return errors.New("Username is taken") } hashedPasswordBytes, err := bcrypt.GenerateFromPassword([]byte(newPassword), bcrypt.MinCost) if err != nil { return fmt.Errorf("Failed to hash password: %w", err) } usersExist, err := hasUsers() if err != nil { return fmt.Errorf("Failed to count users: %w", err) } _, err = createUser(username, hashedPasswordBytes, !usersExist) if err != nil { return fmt.Errorf("Failed to create user: %w\n", err) } return nil }