codeunitAdministration & Setupofficial - Microsoftderived - from the source, no model text

Codeunit 153 "User Permissions Impl."

System Application · System.Security.User

Across versions

  1. BC23present
  2. BC241 events removed
  3. BC252 procedures added
  4. BC261 procedures removed
  5. BC27-30unchanged

Neighbourhood 2 connected objects and pages

Codeunit 152 "User Permissions" (calls, 6 links)User PermissionsCodeunit 457 "Environment Information" (calls, 3 links)Environment Information

Open in the neighbourhood explorer

One hop out, from the extracted relations and call graph. Up to 40 shown; the sections below list them all.

System Application · System.Security.User · BC23-30 · source at ea08af5e · facts from BC29

Properties

Property Value
Access Internal
Permissions tabledata “Access Control” = rimd, tabledata User = r

Events published

  • OnCanManageUsersOnTenant(UserSID: Guid; var Result: Boolean) (internal): An event that indicates that subscribers should set the result that should be returned when the CanManageUsersOnTenant is called.

Event subscriptions

  • CheckSuperPermissionsBeforeRenameAccessControl subscribes to Table “Access Control” OnBeforeRenameEvent
  • CheckSuperPermissionsBeforeDeleteAccessControl subscribes to Table “Access Control” OnBeforeDeleteEvent
  • CheckSuperPermissionsBeforeModifyUser subscribes to Table “User” OnBeforeModifyEvent
  • CheckSuperPermissionsBeforeDeleteUser subscribes to Table “User” OnBeforeDeleteEvent

Procedures

  • IsSuper(UserSecurityId: Guid): Boolean
  • RemoveSuperPermissions(UserSecurityId: Guid): Boolean
  • CanManageUsersOnTenant(UserSID: Guid): Boolean
  • HasUserPermissionSetAssigned(UserSecurityId: Guid; Company: Text; RoleId: Code[20]; ItemScope: Option; AppId: Guid): Boolean
  • HasUserPermissionSetDirectlyAssigned(UserSecurityId: Guid; Company: Text; RoleId: Code[20]; ItemScope: Option; AppId: Guid): Boolean
  • GetEffectivePermission(UserSecurityIdToCheck: Guid; CompanyNameToCheck: Text; PermissionObjectType: Option "Table Data","Table",,"Report",,"Codeunit","XMLport",MenuSuite,"Page","Query","System",,,,,,,,,; ObjectId: Integer): Text (internal)
  • GetEffectivePermission(PermissionObjectType: Option "Table Data","Table",,"Report",,"Codeunit","XMLport",MenuSuite,"Page","Query","System",,,,,,,,,; ObjectId: Integer): Record "Expanded Permission" temporary
  • AssignPermissionSets(var UserSecurityId: Guid; CompanyName: Text; var AggregatePermissionSet: Record "Aggregate Permission Set") + BC25
  • AssignPermissionSet(var UserSecurityId: Guid; CompanyName: Text; var AggregatePermissionSet: Record "Aggregate Permission Set") + BC25

Plus 5 local procedures.

Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.

  • Codeunit 457 “Environment Information” (3 calls: CheckSuperPermissionsBeforeDeleteAccessControl → IsSaaS, CheckSuperPermissionsBeforeDeleteUser → IsSaaS, CheckSuperPermissionsBeforeRenameAccessControl → IsSaaS)

Called by

  • Codeunit 152 “User Permissions” (6 calls: AssignPermissionSets → AssignPermissionSets, CanManageUsersOnTenant → CanManageUsersOnTenant, GetEffectivePermission → GetEffectivePermission, …)

Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "User Permissions Impl."), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.

Evidence 1 sources