Operational Features

Jmix 2 now has all of the core features I need and I find myself wanting standard “operational” features such as:

  • Built-in dark/light theme switching (maybe this is coming in 2.4?)
  • User self service password change
  • Ability to define password complexity requirements
  • Option to force password change on next login
  • Ability to see the application version. Like a Help > About page where someone could see the Jmix version, application version, etc.
  • Ability to see applications “release notes” or “What’s new”. Similar to Help > About, where users can see what application changes have been made recently. These are notes created by the developer, not jmix changes.
  • Option to redirect to different location (static page) upon log out. Vaadin keeps talking to the server after logout and sometimes goes crazy and sends 7-8 requests per second for a few hours if the user keeps their browser open.

It has also been nice to see the regular update of dependencies to keep up with the vulnerabilities.

Thanks for making a great product. It has been a joy to use and works well for our needs.

-Jeff

Hi Jeff,

Thank you for your feedback and encouraging words!

Let me comment on your suggestions.

Yes, it’s coming in Jmix 2.4, see Changing Theme Variants at Runtime.

It’s very easy to implement in your project using the built-in ChangePasswordView, for example:

import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.router.Route;
import io.jmix.core.security.CurrentAuthentication;
import io.jmix.flowui.DialogWindows;
import io.jmix.flowui.view.*;
import io.jmix.securityflowui.view.changepassword.ChangePasswordView;
import org.springframework.beans.factory.annotation.Autowired;

@Route(value = "preferences", layout = MainView.class)
@ViewController("PreferencesView")
@ViewDescriptor("preferences-view.xml")
public class PreferencesView extends StandardView {

    @Autowired
    private DialogWindows dialogWindows;
    @Autowired
    private CurrentAuthentication currentAuthentication;

    @Subscribe("changePasswordBtn")
    public void onChangePasswordBtnClick(ClickEvent<Button> event) {
        DialogWindow<ChangePasswordView> dialog = dialogWindows.view(this, ChangePasswordView.class)
                .build();
        ChangePasswordView view = dialog.getView();
        view.setUsername(currentAuthentication.getUser().getUsername());
        view.setCurrentPasswordRequired(true);
        dialog.open();
    }
}

You can easily do it in your project, see Custom Password Validation.

Planned for a future release: Changing the password at the first login · Issue #1370

Planned for a future release: Third-party Credits for framework modules and application · Issue #437

I think this should better be done on the project level.

We’ll investigate the problem, thanks for the report.

Regards,
Konstantin