Security UI improvements
-
Custom filer should use
flowBoxfor filter fields, so they are displayed on the next line if nit enough space
-
Not all columns values have localization, e.g. Type, Action, Source

-
(Code) Create Entity resource policy - actions must be presented with
CheckBoxGroupinstead of separateCheckBoxes
-
All Create policy screens have to check unsaved changes. Currently only Specific Policy and GraphQL Policy do that.
-
GraphQL Policy is edited (not created) with the DefaultPolicyEditor instead of its own
-
Row-level policy - Dialog buttons must be aligned to the left as all dialog buttons do. Documentation link can be aligned to the right. Also it's worth implementing docs link using the
Linkcomponent instead ofLinkButtonwith programmatic page opening
-
Action field for Predicate Policy for Annotated Class Row Level Role is editable and can produce unsaved changes
We should do all items except 2 (Not all columns values have localization, e.g. Type, Action, Source)
Wait for NPE fix :
aused by: java.lang.NullPointerException: null
at io.jmix.securityui.screen.resourcepolicy.EntityResourcePolicyModelCreate.getPolicyActions(EntityResourcePolicyModelCreate.java:91) ~[jmix-security-ui-1.5.999-SNAPSHOT.jar:na]
at io.jmix.securityui.screen.resourcepolicy.EntityResourcePolicyModelCreate.validateScreen(EntityResourcePolicyModelCreate.java:128) ~[jmix-security-ui-1.5.999-SNAPSHOT.jar:na]
Steps to reproduce:
- Resource Role ->create new one -> create Entity Policy
- Click OK without selecting anything
Reopened TC:
- Open Resource role Create Resource policies:
- Create - Menu policy - Set Resource - After select null string resource AR: NullPointerException: Cannot invoke "String.equals(Object)" because "id" is null
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "id" is null
at io.jmix.ui.menu.MenuConfig.findItem(MenuConfig.java:563)
at io.jmix.securityui.model.DefaultResourcePolicyGroupResolver.resolvePolicyGroupForMenuPolicy(DefaultResourcePolicyGroupResolver.java:174)
at io.jmix.securityui.model.DefaultResourcePolicyGroupResolver.resolvePolicyGroup(DefaultResourcePolicyGroupResolver.java:120)
...
- Create - Screen policy - Set Resource - After select null string resource AR: NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1769)
at java.base/java.util.regex.Matcher.reset(Matcher.java:415)
at java.base/java.util.regex.Matcher.<init>(Matcher.java:252)
at java.base/java.util.regex.Pattern.matcher(Pattern.java:1134)
...