Additional Features Required

Currently we are evaluating CUBA Platform and we are very pleased with the product.
However, there are few features we would like to incorporate in our application which is requested by our client and hopefully CUBA Platform have these features build in or plan to include in future update.

  1. Prevent user to login to web application more than one (1) at the same time either from different PC or browser.
  2. Prevent two or more users from editing the same record at the same time.
  3. Ability to recover a loss work (very long input form) after session timeout, power failure, browser crash, network failure, application restart.

If those features above already available in the CUBA Platform, please let us know how to enable it.

Thank you.

1 Like

Thank you for the interest in our product!
I think you can implement your requirements with some coding on the current version of the platform.

1) Prevent user to login to web application more than one (1) at the same time either from different PC or browser.

Please look at the following sample application: https://github.com/cuba-platform/sample-login-restrictions (it is also available on the Samples tab in Studio). The custom extension of the login procedure defined in MyLoginWorkerBean does not allow a user to login if the number of sessions is more than licensed - see checkConcurrentUsers() method. You can implement your restrictions instead, by searching the logging in user in the list of active sessions.

2) Prevent two or more users from editing the same record at the same time.

This can be achieved by using pessimistic locking. See https://doc.cuba-platform.com/manual-6.1/pessimistic_locking.html

3) Ability to recover a loss work (very long input form) after session timeout, power failure, browser crash, network failure, application restart.

You can periodically save modifications made in an open screen by using a screen timer: see https://doc.cuba-platform.com/manual-6.1/gui_Timer.html. The timer method should invoke DsContext.commit().

Hope this helps.