Extract the duplicated user-search business logic into two helpers both API versions call, and refactor v1's handlers onto them: - user.SearchUsers wraps ListUsers + email obfuscation (global search) - models.SearchUsersForProject wraps the project read check + ListUsersFromProject Each handler keeps its own forbidden mapping (v1 echo.ErrForbidden vs v2 huma) so v1 stays byte-identical on the wire. |
||
|---|---|---|
| .. | ||
| shared | ||
| v1 | ||
| v2 | ||