Open Closed

Error to inject IPermissionGrantManager in AppService of module #9235


User avatar
0
sghorakavi@cpat.com created
  • 1- I am planning to create admin user with end point. Admin user is getting created but when I inject IPermissionGrantManager , it cannot be detected. can access IPermissionDefinitionProvider but not IPermissionGrantManager. I need access to IPermissionGrantManager. Any suggestion ?

5 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    There is no service named IPermissionGrantManager in the ABP framework.

    If you want to check a user's permissions, you can use IPermissionChecker

    Thanks.

  • User Avatar
    0
    sghorakavi@cpat.com created

    Here is the code: Created admin user and trying to grant all permissions to this user, how can I do that:

      async Task<BaseResponse> createAdminUser(Guid tenantId)
      {
          using (CurrentTenant.Change(tenantId))
          {
              // check if admin role exist
              var role = await _roleManager.FindByNameAsync("admin");
              if (role == null)
              {
                  role = new IdentityRole(Guid.NewGuid(), "admin", tenantId);
                  await _roleManager.CreateAsync(role);
    
                  // Grant all permissions admin
                  // var permissions = _permissionDefinitionManager.GetPermissionsAsync();
                  //foreach (var permission in permissions)
                  //{
                  //    // Only grant leaf permissions (optional)
                  //    if (!permission.Children.Any())
                  //    {
                  //        ;
                  //    }
                  //}
              }
    
              // Step 3: Create admin user in tenant context
              var adminUser = new IdentityUser(Guid.NewGuid(), "admin", "cpatserviceaccount@cpat.com", tenantId);
              var result = await _identityUserManager.CreateAsync(adminUser, "1q2w3E*");
              if (!result.Succeeded)
              {
                  return new BaseResponse { ErrorMessage = "LMSCommunicationAppService: Failed to create admin user: " + string.Join(", ", result.Errors.Select(e => e.Description)) };
              }
    
    
              await _identityUserManager.AddToRoleAsync(adminUser, "admin");
          }
          
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    You can use IPermissionDataSeeder to grant permissions to admin role.

    var multiTenancySide = CurrentTenant.GetMultiTenancySide();
    var permissionNames = (await PermissionDefinitionManager.GetPermissionsAsync())
        .Where(p => p.MultiTenancySide.HasFlag(multiTenancySide))
        .Where(p => !p.Providers.Any() || p.Providers.Contains(RolePermissionValueProvider.ProviderName))
        .Select(p => p.Name)
        .ToArray();
    
    await PermissionDataSeeder.SeedAsync(
        RolePermissionValueProvider.ProviderName,
        "admin",
        permissionNames,
        tenantId
    );
    

    https://github.com/abpframework/abp/blob/rel-9.0/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeedContributor.cs#L28-L40

    https://github.com/abpframework/abp/blob/rel-9.0/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDataSeeder.cs#L7

  • User Avatar
    0
    sghorakavi@cpat.com created

    Hi maliming this code worked. Thank you

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Great

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.3.0-preview. Updated on May 15, 2025, 10:28