In menu security, is there a known precedence that Epicor uses when deciding if a user has been ‘allowed’ or ‘denied’ on a particular security code?
I have been writing a function which will return if you are accepted/denied on a particular security code. However, I need to make sure that this aligns exactly with Epicor’s functionality for this.
My precedence order after looking into this (1 = high precedence, 5 = low):
Security Manager → Always grants access.
DisallowAccess (by name) → Always denies access.
AllowAccess (by name) → Always grants access.
AllowAll + DisallowAccess (by group) → Deny if group match, unless name is allowed.
DisallowAll → Deny unless name or group is explicitly allowed.
No matching name or group in AllowAccess → Denied.
Here is a further breakdown:
When a user is ALLOWED access
- Security Manager
- If
UserFile.SecurityMgr == true
, access is immediately granted, no further checks.
- Explicit Allow by Name
- If
UserFile.Name
is listed inSecurity.AllowAccess
, access is granted, even if their group is disallowed.
- AllowAll is True
- Access is granted to everyone, unless:
- The user’s name is in
DisallowAccess
→ denied. - The user’s group is in
DisallowAccess
→ denied. - (But if the user’s name is in
AllowAccess
, that still overrides any disallow.)
- The user’s name is in
- DisallowAll is True
- Access is denied by default, unless:
- The user’s name is in
AllowAccess
→ granted. - The user’s group description is in
AllowAccess
→ granted.
- The user’s name is in
- No AllowAll or DisallowAll
- Access is only granted if:
- The user’s name is in
AllowAccess
. - Or their group description is in
AllowAccess
.
- The user’s name is in
When a user is DENIED access
- Explicit Deny by Name
- If
UserFile.Name
is inDisallowAccess
, access is immediately denied, even if AllowAll or AllowAccess includes them.
- AllowAll is True, but Group is Disallowed
- If user’s group description is in
DisallowAccess
, access is denied, unless their name is explicitly allowed.
- DisallowAll is True, and No Match in AllowAccess
- If user’s name or group is not in
AllowAccess
, access is denied.
- No Matching Name or Group in AllowAccess
- If AllowAll is false, DisallowAll is false, and the user’s name and groups are not listed in
AllowAccess
, access is denied.
If anyone knows the inner workings of menu security maintenance, then confirmation or assistance on this would be amazing!
Thank you for the help