Skip to content

Release 3.8.2 to main#438

Open
snehar-nd wants to merge 30 commits into
mainfrom
release-3.8.2
Open

Release 3.8.2 to main#438
snehar-nd wants to merge 30 commits into
mainfrom
release-3.8.2

Conversation

@snehar-nd

Copy link
Copy Markdown
Contributor

📋 Description

JIRA ID:

Please provide a summary of the change and the motivation behind it. Include relevant context and details.


✅ Type of Change

  • 🐞 Bug fix (non-breaking change which resolves an issue)
  • New feature (non-breaking change which adds functionality)
  • 🔥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🛠 Refactor (change that is neither a fix nor a new feature)
  • ⚙️ Config change (configuration file or build script updates)
  • 📚 Documentation (updates to docs or readme)
  • 🧪 Tests (adding new or updating existing tests)
  • 🎨 UI/UX (changes that affect the user interface)
  • 🚀 Performance (improves performance)
  • 🧹 Chore (miscellaneous changes that don't modify src or test files)

ℹ️ Additional Information

Please describe how the changes were tested, and include any relevant screenshots, logs, or other information that provides additional context.

SauravBizbRolly and others added 30 commits May 6, 2026 12:18
add bengali language translation on dynamic forms
* fix: aam-2313 phone number leading with zero - removed zero

* fix: allow concurrent sessions for admin, superadmin, and supervisor roles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: added admin and superadmin for the condition

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ession logout

redisTemplate has Jackson2JsonRedisSerializer<User> as value serializer, so
reading the plain-string jti: value caused a deserialization failure (statusCode 5000).
jti: keys are written via stringRedisTemplate at login, so reads and deletes must
also use stringRedisTemplate — restoring the behaviour from commit 80fa0e5 that
was accidentally reverted in #423.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix role name from 'admin' to 'provideradmin' to match actual DB value
- Add concurrent session exemption to superUserAuthenticate so SuperAdmin
  can log in from multiple tabs without being blocked

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: use stringRedisTemplate for jti: key read/delete in concurrent session
…ssword

Feature/handel multiple attempt password
Redis keys were stored on MMU login with 30-day TTL but never deleted
on logout. Added cleanup in userLogout() so stale camp config does not
persist after the MMU session ends.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Lets a device on the same network discover the API's LAN IP and port
without needing it typed in manually, and bumps version to 3.8.2.
fix issue of  feature multiple login attempt
….8.2

# Conflicts:
#	src/main/java/com/iemr/common/service/users/IEMRAdminUserService.java
#	src/main/java/com/iemr/common/service/users/IEMRAdminUserServiceImpl.java
Merge release-3.8.1, main ti release-3.8.2
Saurav's PR #431 added a "Remaining attempts: N" message on failed
login to warn users before account lockout. Port this into the
refactored handleFailedLoginAttempt helper so both userAuthenticate
and superUserAuthenticate keep the behavior after merging
release-3.8.1's account-lock refactor into release-3.8.2.
The merge of release-3.8.1's account-lock refactor into release-3.8.2
replaced Saurav Mishra's inline multiple-login-attempt logic
(PR #426/#431/#432) with the refactored handlePasswordValidationAndLocking
helper. The refactor kept the "Remaining attempts" warning but dropped
the final lockout message text, falling back to the unrelated
generateLockoutErrorMessage used for already-locked accounts.

Restore the exact lockout message from PR #432 so the refactored
helper preserves both branches' intended behavior.
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@snehar-nd, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 31 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b3acc939-27a4-474d-9691-1ae7115b61d1

📥 Commits

Reviewing files that changed from the base of the PR and between 3773e26 and d2efa54.

📒 Files selected for processing (12)
  • pom.xml
  • src/main/java/com/iemr/common/controller/connect/ConnectController.java
  • src/main/java/com/iemr/common/controller/users/IEMRAdminController.java
  • src/main/java/com/iemr/common/data/dynamic_from/FormFieldOption.java
  • src/main/java/com/iemr/common/data/translation/Translation.java
  • src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java
  • src/main/java/com/iemr/common/service/users/IEMRAdminUserService.java
  • src/main/java/com/iemr/common/service/users/IEMRAdminUserServiceImpl.java
  • src/main/java/com/iemr/common/utils/CookieUtil.java
  • src/main/java/com/iemr/common/utils/JwtUserIdValidationFilter.java
  • src/main/java/com/iemr/common/utils/NetworkUtil.java
  • src/main/resources/application.properties

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown


public static String getLanIPAddress() {
try (DatagramSocket socket = new DatagramSocket()) {
socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants