LmcUser icon indicating copy to clipboard operation
LmcUser copied to clipboard

Version 4 Plan - Features and Enhancements Roadmap

Open visto9259 opened this issue 2 years ago • 5 comments

Version 4 Plan - Features and Enhancements Roadmap

This is to document the enhancements, features and other changes to bring to LmcUser in a forthcoming version 4.

Rationale

LmcUser is a port of ZF-Commons/ZfcUser to Laminas. ZfcUser was developed several years ago and was based on Zend Framework v2 and v3. The port of ZfcUser to Laminas did not bring significant improvements or new features to the package. New frameworks based on Laminas MVC, such as Laminas API Tools have, come along and the Laminas Components have also evolved. It is long overdue to give it a serious upgrade.

LmcRbacMvc has been installed more than 25K times according to Packagist which is a good indication that the package has its usefulness in web application. We are looking for users of the package to provide inputs into the development roadmap for Version 4.

Process

  • Comment on this issue if you want to add an enhancement or a feature to be included in Version 4.
  • Issues will be created for enhancements/features selected for inclusion in V4 and will be added to the development Backlog and will be labeled as v4
  • Development toward V4 will be done on the 4.x branch.
  • A GitHub project for LmcUser was created and issues to be added to the project so that progress can be managed
  • Issues will be assigned to contributors

Selected Enhancements

  • Use another provide for CI (#46)
  • Add type declarations for parameters and return values (#48)
  • Additional testing for MVC components (#56)
  • #82
  • #81
  • #80
  • #75
  • #97

Proposed enhancements

visto9259 avatar Jul 11 '23 12:07 visto9259

Adding #46 to the list of enhancements

visto9259 avatar Aug 22 '23 18:08 visto9259

Adding #48 to the list of enhancements

visto9259 avatar Mar 11 '24 15:03 visto9259

Adding #56 to list of enhancements

visto9259 avatar Mar 21 '24 20:03 visto9259

A few suggestions.

General suggestions:

  • Remove the Service Locator usage. Service Manager should not be injected into services
  • Move listeners to ListenerAggregates to get them out of bootstrapping.
  • Remove EventManager\EventProvider as EventManagerAwareInterface / EventManagerAwareTrait makes this redundant as far as I can tell.
  • Refactor *Options classes to extend Stdlib\ArrayObject and pass ArrayObject::Array_As_Props flag.

Forms:

  • Move logic to the forms init methods and out of the Form classes constructors.
  • Register Forms via the FormElementManager. The FormElementManager is a plugin manager designed specifically for forms and form elements. It has the Initializable initializer running against all instances (iirc) and verifies that the instances are compatible.
  • Move most current logic to fieldsets so its reusable and entities can be bound to them to simplify controller logic.
  • Provide a PasswordFilter for hashing the password.
  • Use the provided Laminas Authentication provided Validator for logging the user in upon form validation (if possible not sure if your workflow will lend itself to that.)

More to come.

tyrsson avatar Aug 13 '24 17:08 tyrsson

Thanks @tyrsson I will create new issues accordingly

visto9259 avatar Aug 13 '24 17:08 visto9259