Skip to content

feat: migrate Auth0.ManagementApi from v7 to v8 (Fern SDK)#27

Merged
mpaulosky merged 2 commits into
devfrom
squad/26-fix-auth0-v8-migration
Apr 19, 2026
Merged

feat: migrate Auth0.ManagementApi from v7 to v8 (Fern SDK)#27
mpaulosky merged 2 commits into
devfrom
squad/26-fix-auth0-v8-migration

Conversation

@mpaulosky

Copy link
Copy Markdown
Owner

Summary

Closes #26

Migrates Auth0.ManagementApi from v7 (7.46.0) to v8 (8.1.0, Fern-generated SDK) and rewrites UserManagementHandler.cs to use the new API patterns.

Working as Sam (Senior Backend Engineer)

Changes

src/Web/Web.csproj

  • Bump Auth0.ManagementApi from 7.46.08.1.0
  • Add Microsoft.Bcl.AsyncInterfaces 9.0.6 (required for Pager<T> async enumeration in net10.0)

src/Web/Features/UserManagement/UserManagementHandler.cs

Complete rewrite to use v8 API patterns:

  • Constructor: new ManagementApiClient(token:, clientOptions: new ClientOptions { BaseUrl = ... })
  • Users listing: client.Users.ListAsync(new ListUsersRequestParameters(), cancellationToken: ct)Pager<UserResponseSchema> iterated with await foreach
  • User roles listing: client.Users.Roles.ListAsync(userId, new ListUserRolesRequestParameters(), cancellationToken: ct)Pager<Role>
  • Assign role: client.Users.Roles.AssignAsync(userId, new AssignUserRolesRequestContent { Roles = [...] }, cancellationToken: ct)
  • Remove role: client.Users.Roles.DeleteAsync(userId, new DeleteUserRolesRequestContent { Roles = [...] }, cancellationToken: ct)
  • Available roles: client.Roles.ListAsync(new ListRolesRequestParameters(), cancellationToken: ct)Pager<Role>
  • Added using Auth0.ManagementApi.Users; for request/response types
  • Use user.Name instead of user.FullName (removed in v8 UserResponseSchema)

Other .csproj files

  • Bump ServiceDefaults, test tooling packages to latest versions

Testing

  • ✅ Build: 0 errors
  • ✅ Architecture tests: 6/6 passed
  • ✅ Unit tests: passed with 91.68% line coverage

- Bump Auth0.ManagementApi from 7.46.0 to 8.1.0 in Web.csproj
- Add Microsoft.Bcl.AsyncInterfaces 9.0.6 to resolve IAsyncEnumerable
  type needed for Pager<T> iteration
- Rewrite UserManagementHandler to use v8 API patterns:
  - Constructor: ManagementApiClient(token:, clientOptions:)
  - Users.ListAsync(ListUsersRequestParameters, cancellationToken:)
  - Users.Roles.ListAsync(userId, ListUserRolesRequestParameters, cancellationToken:)
  - Users.Roles.AssignAsync(userId, AssignUserRolesRequestContent, cancellationToken:)
  - Users.Roles.DeleteAsync(userId, DeleteUserRolesRequestContent, cancellationToken:)
  - Roles.ListAsync(ListRolesRequestParameters, cancellationToken:)
  - Iterate Pager<T> responses with await foreach
- Add using Auth0.ManagementApi.Users for request/response types
- Use user.Name instead of user.FullName (removed in v8 UserResponseSchema)
- Bump ServiceDefaults and test project packages to latest versions

Working as Sam (Senior Backend Engineer)
Closes #26

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 19, 2026 17:58
@mpaulosky
mpaulosky changed the base branch from main to dev April 19, 2026 18:01
@github-actions

Copy link
Copy Markdown
Contributor

Summary

Summary
Generated on: 04/19/2026 - 18:03:18
Coverage date: 04/19/2026 - 18:02:57 - 04/19/2026 - 18:03:02
Parser: MultiReport (4x Cobertura)
Assemblies: 4
Classes: 35
Files: 34
Line coverage: 64.3% (474 of 737)
Covered lines: 474
Uncovered lines: 263
Coverable lines: 737
Total lines: 2069
Branch coverage: 64% (169 of 264)
Covered branches: 169
Total branches: 264
Method coverage: Feature is only available for sponsors
Tag: 51_24635565512

Coverage

AppHost - 0%
Name Line Branch
AppHost 0% ****
Program 0%
Domain - 93.4%
Name Line Branch
Domain 93.4% 50%
Domain.Abstractions.Result 95% 50%
Domain.Abstractions.Result`1 75% 50%
MyBlog.Domain.Entities.BlogPost 100%
ServiceDefaults - 0%
Name Line Branch
ServiceDefaults 0% 0%
Microsoft.Extensions.Hosting.Extensions 0% 0%
Web - 68.1%
Name Line Branch
Web 68.1% 69%
MyBlog.Web.Components.Layout.MainLayout 100%
MyBlog.Web.Components.Layout.NavMenu 82.8% 71.4%
MyBlog.Web.Components.Pages.Error 100% 75%
MyBlog.Web.Components.Routes 0% 0%
MyBlog.Web.Components.Shared.RedirectToLogin 100%
MyBlog.Web.Data.BlogDbContext 100%
MyBlog.Web.Data.BlogPostDto 100%
MyBlog.Web.Data.BlogPostMappings 100%
MyBlog.Web.Data.MongoDbBlogPostRepository 100% 100%
MyBlog.Web.Features.BlogPosts.Create.Create 75% 50%
MyBlog.Web.Features.BlogPosts.Create.CreateBlogPostCommand 100%
MyBlog.Web.Features.BlogPosts.Create.CreateBlogPostHandler 100%
MyBlog.Web.Features.BlogPosts.Delete.ConfirmDeleteDialog 100% 100%
MyBlog.Web.Features.BlogPosts.Delete.DeleteBlogPostCommand 100%
MyBlog.Web.Features.BlogPosts.Delete.DeleteBlogPostHandler 100%
MyBlog.Web.Features.BlogPosts.Edit.Edit 88% 75%
MyBlog.Web.Features.BlogPosts.Edit.EditBlogPostCommand 100%
MyBlog.Web.Features.BlogPosts.Edit.EditBlogPostHandler 84% 90%
MyBlog.Web.Features.BlogPosts.Edit.GetBlogPostByIdQuery 100%
MyBlog.Web.Features.BlogPosts.List.GetBlogPostsHandler 100% 100%
MyBlog.Web.Features.BlogPosts.List.Index 86.8% 84.6%
MyBlog.Web.Features.UserManagement.AssignRoleCommand 100%
MyBlog.Web.Features.UserManagement.ManageRoles 90.4% 75%
MyBlog.Web.Features.UserManagement.Profile 97.2% 82%
MyBlog.Web.Features.UserManagement.RemoveRoleCommand 100%
MyBlog.Web.Features.UserManagement.RoleDto 100%
MyBlog.Web.Features.UserManagement.UserManagementHandler 0% 0%
MyBlog.Web.Features.UserManagement.UserWithRolesDto 100%
MyBlog.Web.Security.RoleClaimsHelper 91.8% 91.1%
Program 0% 0%

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
Domain 0% 0% 38
Web 0% 0% 334
ServiceDefaults 0% 0% 18
Domain 0% 0% 38
Web 0% 0% 334
ServiceDefaults 0% 0% 18
AppHost 0% 100% 1
Domain 43% 0% 38
Web 5% 1% 334
ServiceDefaults 0% 0% 18
AppHost 0% 100% 1
Domain 43% 0% 38
Web 5% 1% 334
ServiceDefaults 0% 0% 18
Domain 93% 50% 38
Web 63% 65% 334
ServiceDefaults 0% 0% 18
Domain 93% 50% 38
Web 63% 65% 334
ServiceDefaults 0% 0% 18
Summary 23% (1000 / 4382) 21% (338 / 1644) 2342

@mpaulosky
mpaulosky merged commit e82a50f into dev Apr 19, 2026
6 checks passed
@mpaulosky
mpaulosky deleted the squad/26-fix-auth0-v8-migration branch April 19, 2026 18:06
@mpaulosky
mpaulosky removed the request for review from Copilot April 19, 2026 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: Migrate Auth0.ManagementApi from v7 to v8 (resolve Dependabot PR #24)

1 participant