InputDialog on LoginScreen


I have a standard login screen and I’m now trying to implement a forgotten password flow in it.

I have a button called “Forgotten password” and what I want to achieve is to open a dialog with a single input value - the user’s registration email. When they input it I’d like to send them an email with a reset link.

I’m a bit stuck though - it seems that the anonymous user has access to the Dialog and OptionsDialog classes but not the InputDialog one:

Denied access to [screen: inputDialog] for user [anonymous] by io.jmix.securityui.constraint.UiShowScreenConstraint

I tried defining an Anonymous user role and gave them access to the input dialog UI element, hoping it would override the default anonymous access list, but it didn’t do anything.

Any idea on how I can achieve this?


  1. Create the AnonymousRole resource role and allow access to inputDialog:
import io.jmix.securityui.role.annotation.ScreenPolicy;

@ResourceRole(name = "AnonymousRole", code = AnonymousRole.CODE)
public interface AnonymousRole {

    String CODE = "anonymous-role";

    @ScreenPolicy(screenIds = "inputDialog")
    void screens();
  1. Grant AnonymousRole to the anonymous user in DatabaseUserRepository :
protected void initAnonymousUser(User anonymousUser) {
    Collection<GrantedAuthority> authorities = getGrantedAuthoritiesBuilder()
  1. In the file enable anonymous access:
# enable anonymous access

See doc for more detail.