From ca17c8cc4aeec72211bdd54e2e94683ca5c543b1 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Tue, 10 Feb 2026 12:56:50 +0530 Subject: [PATCH 1/5] RCF-1277 RCF-1378 Added audit logs Signed-off-by: Madhuravas reddy --- .../api_services/AuthenticationApi.java | 1 + .../api_services/BiometricsDetailsApi.java | 8 ++++ .../api_services/DemographicsDetailsApi.java | 6 +++ .../api_services/MachineDetailsApi.java | 1 + .../api_services/MasterDataSyncApi.java | 4 +- .../api_services/PacketAuthenticationApi.java | 18 ++++++++- .../api_services/UserDetailsApi.java | 7 ++++ .../registration_client/utils/BatchJob.java | 5 ++- .../clientmanager/config/AppModule.java | 10 +++-- .../clientmanager/constant/AuditEvent.java | 40 ++++++++++++++++++- .../service/PacketServiceImpl.java | 9 ++++- .../service/PreCheckValidatorServiceImpl.java | 11 ++++- .../service/RegistrationServiceImpl.java | 10 ++++- .../widget/template_bottom_sheet.dart | 4 +- .../acknowledgement_page.dart | 2 +- lib/ui/process_ui/generic_process.dart | 11 +++++ ...biometric_capture_scan_block_portrait.dart | 7 +++- 17 files changed, 138 insertions(+), 16 deletions(-) diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/AuthenticationApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/AuthenticationApi.java index 5055dc69c..fcee48f24 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/AuthenticationApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/AuthenticationApi.java @@ -270,6 +270,7 @@ public void getAutoLogoutPopupTimeout(@NonNull AuthResponsePigeon.Result @Override public void getRolesByUserId(@NonNull String userId, @NonNull AuthResponsePigeon.Result> result) { + auditManagerService.audit(AuditEvent.FETCH_USR_ROLE, Components.LOGIN); try { List roles = loginService.getRolesByUserId(userId); result.success(roles); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java index 98589b7da..3980dc163 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/BiometricsDetailsApi.java @@ -561,6 +561,7 @@ public void saveOperatorBiometrics(@NonNull BiometricsPigeon.Result resu public void addBioException(@NonNull String fieldId, @NonNull String modality, @NonNull String attribute, @NonNull BiometricsPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.REG_BIO_EXCEPTION_MARKING, Components.REGISTRATION); if(fieldId.equals(OPERATOR_BIOMETRICS)){ @@ -589,6 +590,7 @@ public void addBioException(@NonNull String fieldId, @NonNull String modality, @ public void removeBioException(@NonNull String fieldId, @NonNull String modality, @NonNull String attribute, @NonNull BiometricsPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.REG_BIO_EXCEPTION_REMOVING, Components.REGISTRATION); if(fieldId.equals(OPERATOR_BIOMETRICS)){ OPERATOR_EXCEPTIONS.remove(attribute); @@ -940,6 +942,12 @@ private void rcapture(String callbackId, String deviceId) { } try { + auditManagerService.auditWithArguments( + AuditEvent.REG_BIO_SCAN, + Components.REGISTRATION.getId(), + Components.REGISTRATION.getName(), + String.valueOf(currentModality) + ); Intent intent = new Intent(); // callbackId = callbackId.replace("\\.info",""); intent.setAction(callbackId + RegistrationConstants.R_CAPTURE_INTENT_ACTION); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/DemographicsDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/DemographicsDetailsApi.java index 9939fec9e..fa8269a9c 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/DemographicsDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/DemographicsDetailsApi.java @@ -17,6 +17,8 @@ import javax.inject.Inject; import javax.inject.Singleton; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; import io.mosip.registration.clientmanager.dto.registration.RegistrationDto; import io.mosip.registration.clientmanager.repository.GlobalParamRepository; import io.mosip.registration.clientmanager.spi.AuditManagerService; @@ -44,6 +46,7 @@ public DemographicsDetailsApi(RegistrationService registrationService, AuditMana @Override public void addDemographicField(@NonNull String fieldId, @NonNull String value, @NonNull DemographicsDataPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.SAVE_DETAIL_TO_DTO, Components.REGISTRATION); this.registrationService.getRegistrationDto().addDemographicField(fieldId, value); result.success("Ok"); } catch (Exception e) { @@ -81,6 +84,7 @@ public void getHashValue(@NonNull byte[] bytes, @NonNull DemographicsDataPigeon. @Override public void addSimpleTypeDemographicField(@NonNull String fieldId, @NonNull String value, @NonNull String language, @NonNull DemographicsDataPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.SAVE_DETAIL_TO_DTO, Components.REGISTRATION); this.registrationService.getRegistrationDto().addDemographicField(fieldId, value, language); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Add simple type field failed!" + Arrays.toString(e.getStackTrace())); @@ -116,6 +120,7 @@ public void getSimpleTypeDemographicField(@NonNull String fieldId, @NonNull Stri @Override public void setDateField(@NonNull String fieldId, @NonNull String subType, @NonNull String day, @NonNull String month, @NonNull String year, @NonNull DemographicsDataPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.SAVE_DETAIL_TO_DTO, Components.REGISTRATION); this.registrationService.getRegistrationDto().setDateField(fieldId, subType, day, month, year); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Add date field failed!" + Arrays.toString(e.getStackTrace())); @@ -134,6 +139,7 @@ public void removeDemographicField(@NonNull String fieldId, @NonNull Demographic @Override public void setConsentField(@NonNull String consentData, @NonNull DemographicsDataPigeon.Result result) { try { + auditManagerService.audit(AuditEvent.SAVE_DETAIL_TO_DTO, Components.REGISTRATION); this.registrationService.getRegistrationDto().setConsent(consentData); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Add consent dto failed!" + Arrays.toString(e.getStackTrace())); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/MachineDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/MachineDetailsApi.java index 0b8f4a487..a154b8118 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/MachineDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/MachineDetailsApi.java @@ -76,6 +76,7 @@ public void getMachineDetails(@NonNull MachinePigeon.Result result) { + auditManagerService.audit(AuditEvent.FETCH_CNTR_NAME, Components.LOGIN); List registrationCenterList = new ArrayList<>(); RegistrationCenter registrationCenter; String regCenter = ""; diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java index ee5236dce..3cebf8930 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java @@ -211,7 +211,7 @@ public void getUserDetailsSync(@NonNull Boolean isManualSync, @NonNull String jo try { masterDataService.syncUserDetails(() -> { auditManagerService.audit( - AuditEvent.SYNC_USER_MAPPING, + AuditEvent.SYNC_USER_DETAILS, Components.REGISTRATION ); Log.i(TAG, "User details sync Completed."); @@ -241,6 +241,7 @@ public void getMasterDataSync(@NonNull Boolean isManualSync, @NonNull String job try { masterDataService.syncMasterData(() -> { auditManagerService.audit(AuditEvent.SYNC_MASTER_DATA,Components.REGISTRATION); + auditManagerService.audit(AuditEvent.SYNC_DEVICE_DETAILS, Components.REGISTRATION); Log.i(TAG, "Master Data Sync Completed."); result.success(syncResult("MasterDataSync", 2, masterDataService.onResponseComplete())); }, 0, isManualSync, jobId); @@ -435,6 +436,7 @@ public void getNextSyncTimeByJobId(@NonNull String jobId, @NonNull MasterDataSyn @Override public void getActiveSyncJobs(@NonNull MasterDataSyncPigeon.Result> result) { + auditManagerService.audit(AuditEvent.SYNCJOB_INFO_FETCH, Components.JOB_SERVICE); List list = syncJobDefRepository.getActiveSyncJobs(); List value = new ArrayList<>(); try { diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java index 0f93260df..d88a5dd16 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java @@ -116,6 +116,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.SYNC_COMPLETED) || status.equals(PacketTaskStatus.SYNC_ALREADY_COMPLETED)) { remainingPack[1] += 1; + auditManagerService.audit(AuditEvent.PACKET_SYNCED_TO_SERVER, Components.REGISTRATION); } remainingPack[0] -= 1; @@ -151,7 +152,7 @@ public void uploadPacketAll(@NonNull List packetIds, @NonNull PacketAuth CustomToast newToast = new CustomToast(activity); for (String value : packetIds) { try { - auditManagerService.audit(AuditEvent.UPLOAD_PACKET, Components.REG_PACKET_LIST); + auditManagerService.audit(AuditEvent.PACKET_UPLOAD, Components.REG_PACKET_LIST); Integer remaining = packetSize - remainingPack[0]; newToast.setText(String.format("Upload Packet Status : %s/%s Processed", remaining.toString(), packetSize.toString())); newToast.showToast(); @@ -167,7 +168,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.UPLOAD_COMPLETED) || status.equals(PacketTaskStatus.UPLOAD_ALREADY_COMPLETED)) { remainingPack[1] += 1; - auditManagerService.audit(AuditEvent.PACKET_UPLOAD, Components.REGISTRATION); + auditManagerService.audit(AuditEvent.PACKET_UPLOADED, Components.REGISTRATION); } remainingPack[0] -= 1; @@ -192,6 +193,7 @@ public void onComplete(String RID, PacketTaskStatus status) { }); } catch (Exception e) { Log.e(getClass().getSimpleName(), e.getMessage()); + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REGISTRATION); } } } @@ -214,6 +216,7 @@ public void getAllRegistrationPacket(@NonNull PacketAuthPigeon.Result> result) { + auditManagerService.audit(AuditEvent.PACKET_RETRIVE, Components.REGISTRATION); List packets = new ArrayList(); try { List allRegistration = packetService.getRegistrationsByStatus(PacketClientStatus.CREATED.name(), 40); @@ -231,12 +234,23 @@ public void getAllCreatedRegistrationPacket(@NonNull PacketAuthPigeon.Result result) { registrationRepository.updateStatus(packetId, serverStatus, clientStatus); + if (PacketClientStatus.APPROVED.name().equals(clientStatus)) { + auditManagerService.audit(AuditEvent.PACKET_APPROVED, Components.REGISTRATION); + } else if (PacketClientStatus.REJECTED.name().equals(clientStatus)) { + auditManagerService.audit(AuditEvent.PACKET_REJECTED, Components.REGISTRATION); + } result.success(null); } @Override public void supervisorReview(@NonNull String packetId, @NonNull String supervisorStatus, @NonNull String supervisorComment, @NonNull PacketAuthPigeon.Result result) { + auditManagerService.audit(AuditEvent.PACKET_UPDATE, Components.REGISTRATION); registrationRepository.updateSupervisorReview(packetId, supervisorStatus, supervisorComment); + if (PacketClientStatus.APPROVED.name().equals(supervisorStatus)) { + auditManagerService.audit(AuditEvent.PACKET_APPROVED, Components.REGISTRATION); + } else if (PacketClientStatus.REJECTED.name().equals(supervisorStatus)) { + auditManagerService.audit(AuditEvent.PACKET_REJECTED, Components.REGISTRATION); + } result.success(null); } } diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java index 46f08b540..5d0209c2b 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java @@ -18,6 +18,8 @@ import javax.inject.Inject; import javax.inject.Singleton; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; import io.mosip.registration.clientmanager.dto.CenterMachineDto; import io.mosip.registration.clientmanager.entity.RegistrationCenter; import io.mosip.registration.clientmanager.entity.UserDetail; @@ -46,6 +48,8 @@ public UserDetailsApi(LoginService loginService, RegistrationCenterRepository re @Override public void validateUser(@NonNull String username, @NonNull String langCode, @NonNull UserPigeon.Result result) { + auditManagerService.audit(AuditEvent.USER_STATUS_FETCH, Components.LOGIN); + auditManagerService.audit(AuditEvent.FETCH_USR_DET, Components.LOGIN); if (username == null || username.trim().length() == 0) { UserPigeon.User user = new UserPigeon.User.Builder() .setUserId(username) @@ -65,6 +69,7 @@ public void validateUser(@NonNull String username, @NonNull String langCode, @No result.success(user); return; } + auditManagerService.audit(AuditEvent.VALIDATE_USER_CRED, Components.LOGIN); UserDetail userDetail = loginService.getUserDetailsByUserId(username); CenterMachineDto centerMachineDto = this.masterDataService.getRegistrationCenterMachineDetails(); boolean centerStatus = true; @@ -112,11 +117,13 @@ public void validateUser(@NonNull String username, @NonNull String langCode, @No } public String getCenterName(String regCenterId, String langCode) { + auditManagerService.audit(AuditEvent.FETCH_CNTR_NAME, Components.LOGIN); List registrationCenterList = new ArrayList<>(); RegistrationCenter registrationCenter; String regCenter = ""; try { registrationCenter = registrationCenterRepository.getRegistrationCenterByCenterIdAndLangCode(regCenterId, langCode); + auditManagerService.audit(AuditEvent.FETCH_CNTR_DET, Components.LOGIN); if(registrationCenter != null) { regCenter = registrationCenter.getName(); return regCenter; diff --git a/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java b/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java index 3c60a4c58..525b1a56d 100644 --- a/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java +++ b/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java @@ -104,6 +104,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.SYNC_COMPLETED) || status.equals(PacketTaskStatus.SYNC_ALREADY_COMPLETED)) { remainingPack[1] += 1; + auditManagerService.audit(AuditEvent.PACKET_SYNCED_TO_SERVER, Components.REG_PACKET_LIST); } remainingPack[0] -= 1; @@ -148,7 +149,7 @@ public void uploadRegistrationPackets(Context context) { try { syncAndUploadInProgressStatus = true; Log.d(getClass().getSimpleName(), "Uploading " + value.getPacketId()); - auditManagerService.audit(AuditEvent.UPLOAD_PACKET, Components.REG_PACKET_LIST); + auditManagerService.audit(AuditEvent.PACKET_UPLOAD, Components.REG_PACKET_LIST); Integer remaining = packetSize - remainingPack[0]; newToast.setText(String.format("Upload Packet Status : %s/%s Processed", remaining.toString(), packetSize.toString())); @@ -165,6 +166,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.UPLOAD_COMPLETED) || status.equals(PacketTaskStatus.UPLOAD_ALREADY_COMPLETED)) { remainingPack[1] += 1; + auditManagerService.audit(AuditEvent.PACKET_UPLOADED, Components.REG_PACKET_LIST); } remainingPack[0] -= 1; @@ -190,6 +192,7 @@ public void onComplete(String RID, PacketTaskStatus status) { } catch (Exception e) { syncAndUploadInProgressStatus = false; Log.e(getClass().getSimpleName(), e.getMessage()); + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REG_PACKET_LIST); } } } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java index a9f413251..894ce30e2 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java @@ -226,9 +226,10 @@ UserInterfaceHelperService provideUserInterfaceHelperService() { @Singleton PacketService providePacketService(RegistrationRepository registrationRepository, IPacketCryptoService packetCryptoService, SyncRestService syncRestService, - MasterDataService masterDataService, GlobalParamRepository globalParamRepository) { + MasterDataService masterDataService, GlobalParamRepository globalParamRepository, + AuditManagerService auditManagerService) { return new PacketServiceImpl(appContext, registrationRepository, packetCryptoService, syncRestService, - masterDataService, globalParamRepository); + masterDataService, globalParamRepository, auditManagerService); } @Provides @@ -322,9 +323,10 @@ PreCheckValidatorService providePreCheckValidatorService(SyncJobDefRepository sy JobTransactionService jobTransactionService, LocationValidationService locationValidationService, MasterDataService masterDataService, - RegistrationCenterRepository registrationCenterRepository) { + RegistrationCenterRepository registrationCenterRepository, + AuditManagerService auditManagerService) { return new PreCheckValidatorServiceImpl(appContext, syncJobDefRepository, globalParamRepository, jobManagerService, jobTransactionService, locationValidationService, masterDataService, - registrationCenterRepository); + registrationCenterRepository, auditManagerService); } } \ No newline at end of file diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java index 18b58180e..95d4115e2 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java @@ -28,6 +28,12 @@ public enum AuditEvent { "Login with password: Click of Submit"), ABOUT_CLIENT("REG-AUTH-003", USER_EVENT.getCode(), "ABOUT_CLIENT", "Press and hold on logo to navigate: About activity"), LOGOUT_USER("REG-AUTH-009", USER_EVENT.getCode(), "LOGOUT_USER", "Logout"), + USER_STATUS_FETCH("REG-AUTH-011", USER_EVENT.getCode(), "USER_STATUS_FETCH", "Fetching User Status"), + VALIDATE_USER_CRED("REG-AUTH-012", USER_EVENT.getCode(), "VALIDATE_USER_CREDENTIALS", "Validating User credentials"), + FETCH_USR_DET("REG-AUTH-013", USER_EVENT.getCode(), "FETCH_USER_DETAILS", "Fetching User Details"), + FETCH_CNTR_NAME("REG-AUTH-014", USER_EVENT.getCode(), "FETCH_CENTER_NAME", "Fetching Center Name"), + FETCH_CNTR_DET("REG-AUTH-015", USER_EVENT.getCode(), "FETCH_CENTER_DETAILS", "Fetching Center Details"), + FETCH_USR_ROLE("REG-AUTH-016", USER_EVENT.getCode(), "FETCH_USER_ROLE", "Fetching User Roles"), // Navigation NAV_LOST_UIN("REG-EVT-001", USER_EVENT.getCode(), "NAV_LOST_UIN", "Click of navigation link: Lost UIN"), @@ -57,8 +63,10 @@ public enum AuditEvent { //REG_PACKET_LIST SYNC_PACKET("REG-PKT-001", USER_EVENT.getCode(), "SYNC_PACKET", "Packet sync clicked"), + PACKET_UPDATE("REG-PKT-002", USER_EVENT.getCode(), "PACKET_UPDATE", "Packets which are in created state are updated"), UPLOAD_PACKET("REG-UPL-PKT-001", USER_EVENT.getCode(), "UPLOAD_PACKET", "Upload packet clicked"), SYNC_AND_UPLOAD_PACKET("REG-PKT-003", USER_EVENT.getCode(), "SYNC_AND_UPLOAD_PACKET", "sync and upload started"), + PACKET_RETRIVE("REG-PKT-004", USER_EVENT.getCode(), "PACKET_RETRIVE", "Packets which are in created state for approval are retrived"), //JOB_SERVICE TRIGGER_JOB("REG-JOB-001", USER_EVENT.getCode(), "TRIGGER_JOB", "Trigger job service clicked"), @@ -126,6 +134,10 @@ public enum AuditEvent { SYNC_USER_MAPPING("REG-SYNC-008", USER_EVENT.getCode(), "SYNC_USER_MAPPING", "Sync user mapping"), SYNC_DEVICE_MAPPING("REG-SYNC-009", USER_EVENT.getCode(), "SYNC_DEVICE_MAPPING", "Sync device mapping"), SYNC_CLIENT_STATE("REG-SYNC-010", USER_EVENT.getCode(), "SYNC_CLIENT_STATE", "Sync client state"), + SYNCJOB_INFO_FETCH("REG-SYNC-011", USER_EVENT.getCode(), "SYNC_JOB_INFO_FETCH", "SyncJobInfo containing the sync control list and yet to export packet count fetched successfully"), + SYNC_INFO_VALIDATE("REG-SYNC-012", USER_EVENT.getCode(), "SYNC_INFO_VALIDATION", "Validating the sync status ended successfully"), + SYNC_PKT_COUNT_VALIDATE("REG-SYNC-013", USER_EVENT.getCode(), "SYNC_PKT_COUNT_VALIDATION", "Validating yet to export packets frequency with the configured limit count"), + SYNC_GEO_VALIDATE("REG-SYNC-015", USER_EVENT.getCode(), "SYNC_GEO_VALIDATE", "Validating the geo information ended successfully"), // Export Packets EXPORT_REG_PACKETS("REG-EXPT-PKT-001", USER_EVENT.getCode(), "EXPORT_REGISTRATION_PACKETS", @@ -153,7 +165,33 @@ public enum AuditEvent { SCHEDULER_REFRESHED_TIMEOUT("REG-SCH-002", SYSTEM_EVENT.getCode(), "REFRESHED_TIMEOUT", "The time task remainder alert"), SCHEDULER_SESSION_TIMEOUT("REG-SCH-003", SYSTEM_EVENT.getCode(), "SESSION_TIMEOUT", - "The time task session expires"); + "The time task session expires"), + + // Registration: Operator/Supervisor Authentication + REG_OPERATOR_AUTH_PASSWORD("REG-EVT-048", USER_EVENT.getCode(), "REG_OPERATOR_AUTH_PASSWORD","Operator authentication with password: Click of Submit"), + REG_OPERATOR_AUTH_PREVIEW("REG-EVT-055", USER_EVENT.getCode(), "REG_OPERATOR_AUTH_PREVIEW", "Back to Preview"), + REG_ACK_PRINT("REG-EVT-056", USER_EVENT.getCode(), "REG_ACK_PRINT", "Print receipt"), + + // Registration Packet Creation + PACKET_CREATION_SUCCESS("REG-EVT-066", USER_EVENT.getCode(), "PACKET_CREATION_SUCCESS","Packet Succesfully Created"), + PACKET_ENCRYPTED("REG-EVT-067", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Sucessfully"), + PACKET_UPLOADED("REG-EVT-068", USER_EVENT.getCode(), "PACKET_UPLOADED", "Packet Uploaded Successfully"), + PACKET_SYNCED_TO_SERVER("REG-EVT-069", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Sucesfully"), + PACKET_APPROVED("REG-EVT-071", USER_EVENT.getCode(), "PACKET_APPROVED", "Packet Approved Successfully"), + PACKET_REJECTED("REG-EVT-072", USER_EVENT.getCode(), "PACKET_REJECTED", "Packet Rejected Successfully"), + PACKET_INTERNAL_ERROR("REG-EVT-074", USER_EVENT.getCode(), "PACKET_INTERNAL_ERROR", "Packet Creation Error"), + PACKET_INTERNAL_ZIP("REG-EVT-075", USER_EVENT.getCode(), "PACKET_INTERNAL_ZIP", "Packet internally zipped successfully"), + PACKET_DEMO_JSON_CREATED("REG-EVT-076", USER_EVENT.getCode(), "PACKET_DEMO_JSON_CREATED", "Packet Demographic JSON created successfully"), + SAVE_DETAIL_TO_DTO("REG-EVT-084", USER_EVENT.getCode(), "SAVE_DETAIL_TO_DTO", "Saving the details to DTO"), + + // Biometrics + REG_BIO_EXCEPTION_MARKING("REG-EVT-027", USER_EVENT.getCode(), "REG_BIO_EXCEPTION_MARKING", "Biometric Exceptions: Marking"), + REG_BIO_NEXT("REG-EVT-037", USER_EVENT.getCode(), "REG_BIO_NEXT", "Click Next to capture the next biometric"), + REG_BIO_EXCEPTION_REMOVING("REG-EVT-065", USER_EVENT.getCode(), "REG_BIO_EXCEPTION_REMOVING", "Biometric Exceptions: Removing"), + REG_BIO_LEFT_SLAP_SCAN("REG-EVT-030", USER_EVENT.getCode(), "REG_BIO_LEFT_SLAP_SCAN", "Fingerprints: Scan of left slap"), + REG_BIO_SCAN("REG-EVT-030", USER_EVENT.getCode(), "REG_BIO_SCAN", "Fingerprints: Scan of %s"), + REG_BIO_CAPTURE_NEXT("REG-EVT-041", USER_EVENT.getCode(), "REG_BIO_CAPTURE_NEXT", "Click of Next after capturing Biometrics"); + AuditEvent(String id, String type, String name, String description) { this.id = id; this.type = type; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java index 2e9b29fe3..dc8f911f6 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java @@ -41,9 +41,12 @@ import io.mosip.registration.clientmanager.repository.GlobalParamRepository; import io.mosip.registration.clientmanager.repository.RegistrationRepository; import io.mosip.registration.clientmanager.spi.AsyncPacketTaskCallBack; +import io.mosip.registration.clientmanager.spi.AuditManagerService; import io.mosip.registration.clientmanager.spi.MasterDataService; import io.mosip.registration.clientmanager.spi.PacketService; import io.mosip.registration.clientmanager.spi.SyncRestService; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; import io.mosip.registration.clientmanager.util.SyncRestUtil; import io.mosip.registration.keymanager.util.CryptoUtil; import io.mosip.registration.packetmanager.spi.IPacketCryptoService; @@ -79,17 +82,20 @@ public class PacketServiceImpl implements PacketService { private SyncRestService syncRestService; private MasterDataService masterDataService; private GlobalParamRepository globalParamRepository; + private AuditManagerService auditManagerService; @Inject public PacketServiceImpl(Context context, RegistrationRepository registrationRepository, IPacketCryptoService packetCryptoService, SyncRestService syncRestService, - MasterDataService masterDataService, GlobalParamRepository globalParamRepository) { + MasterDataService masterDataService, GlobalParamRepository globalParamRepository, + AuditManagerService auditManagerService) { this.context = context; this.registrationRepository = registrationRepository; this.packetCryptoService = packetCryptoService; this.syncRestService = syncRestService; this.masterDataService = masterDataService; this.globalParamRepository = globalParamRepository; + this.auditManagerService = auditManagerService; } @Override @@ -419,6 +425,7 @@ public boolean validatingLastExportDuration() { @Override public boolean isMaxPacketCountLimitReached() { try { + auditManagerService.audit(AuditEvent.SYNC_PKT_COUNT_VALIDATE, Components.REGISTRATION); String maxCountStr = globalParamRepository.getCachedStringGlobalParam( RegistrationConstants.REG_PAK_MAX_CNT_OFFLINE_FREQ); diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java index ea98a6284..0acbc5724 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java @@ -26,6 +26,9 @@ import io.mosip.registration.clientmanager.spi.LocationValidationService; import io.mosip.registration.clientmanager.spi.MasterDataService; import io.mosip.registration.clientmanager.spi.PreCheckValidatorService; +import io.mosip.registration.clientmanager.spi.AuditManagerService; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; /** * Validates pre-check requirements (sync status and GPS location). @@ -45,6 +48,7 @@ public class PreCheckValidatorServiceImpl implements PreCheckValidatorService { private LocationValidationService locationValidationService; private MasterDataService masterDataService; private RegistrationCenterRepository registrationCenterRepository; + private AuditManagerService auditManagerService; @Inject public PreCheckValidatorServiceImpl( @@ -55,7 +59,8 @@ public PreCheckValidatorServiceImpl( JobTransactionService jobTransactionService, LocationValidationService locationValidationService, MasterDataService masterDataService, - RegistrationCenterRepository registrationCenterRepository) { + RegistrationCenterRepository registrationCenterRepository, + AuditManagerService auditManagerService) { this.context = context; this.syncJobDefRepository = syncJobDefRepository; this.globalParamRepository = globalParamRepository; @@ -64,6 +69,7 @@ public PreCheckValidatorServiceImpl( this.locationValidationService = locationValidationService; this.masterDataService = masterDataService; this.registrationCenterRepository = registrationCenterRepository; + this.auditManagerService = auditManagerService; } /** @@ -75,6 +81,7 @@ public PreCheckValidatorServiceImpl( public void validateSyncStatus() throws Exception { try { validatingSyncJobsConfig(); + auditManagerService.audit(AuditEvent.SYNC_INFO_VALIDATE, Components.JOB_SERVICE); } catch (ClientCheckedException e) { Log.e(TAG, "Sync status validation failed", e); throw e; @@ -282,6 +289,8 @@ public void validateCenterToMachineDistance(Double machineLongitude, Double mach context.getString(R.string.err_003)); } + auditManagerService.audit(AuditEvent.SYNC_GEO_VALIDATE, Components.REGISTRATION); + } catch (NumberFormatException e) { Log.e(TAG, "Invalid number format in center coordinates or max distance configuration", e); throw new ClientCheckedException(context, R.string.err_004); diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index 3b33c4983..1d8334b5d 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -47,6 +47,8 @@ import io.mosip.registration.clientmanager.BuildConfig; import io.mosip.registration.clientmanager.R; import io.mosip.registration.clientmanager.config.SessionManager; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; import io.mosip.registration.clientmanager.constant.Modality; import io.mosip.registration.clientmanager.constant.PacketClientStatus; import io.mosip.registration.clientmanager.constant.RegistrationConstants; @@ -303,7 +305,10 @@ public void submitRegistrationDto(String makerName) throws Exception { this.registrationDto.getProcess(), true, centerMachineDto.getMachineRefId()); - + // Log packet encryption success + auditManagerService.audit(AuditEvent.PACKET_ENCRYPTED, Components.REGISTRATION); + // Log packet zipped successfully + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ZIP, Components.REGISTRATION); if (containerPath != null || !containerPath.trim().isEmpty()) { String packetId = containerPath.substring(containerPath.lastIndexOf("/") + 1); @@ -334,6 +339,9 @@ public void submitRegistrationDto(String makerName) throws Exception { registrationRepository.insertRegistration(this.registrationDto.getPacketId(), containerPath, centerMachineDto.getCenterId(), this.registrationDto.getProcess(), additionalInfo, this.registrationDto.getAdditionalInfoRequestId(), this.registrationDto.getRId(), this.registrationDto.getApplicationId()); + // Log packet creation success + auditManagerService.audit(AuditEvent.PACKET_CREATION_SUCCESS, Components.REGISTRATION); + // Auto-approve when supervisor approval is disabled (flag not "Y") String supervisorApprovalFlag = globalParamRepository.getCachedStringGlobalParam( RegistrationConstants.SUPERVISOR_APPROVAL_CONFIG_FLAG); diff --git a/lib/ui/approve_packet/widget/template_bottom_sheet.dart b/lib/ui/approve_packet/widget/template_bottom_sheet.dart index 1903a2bd8..1f391d160 100644 --- a/lib/ui/approve_packet/widget/template_bottom_sheet.dart +++ b/lib/ui/approve_packet/widget/template_bottom_sheet.dart @@ -144,7 +144,7 @@ class TemplateBottomSheet { onPressed: reviewStatus == ReviewStatus.APPROVED.name ? null : () { - globalProvider.getAudit("REG-EVT-067", "REG-MOD-103"); + globalProvider.getAudit("PACKET_APPROVED", "REG-MOD-103"); context .read() .approvePacket(regCurrent.packetId); @@ -182,7 +182,7 @@ class TemplateBottomSheet { onPressed: reviewStatus == ReviewStatus.REJECTED.name ? null : () { - globalProvider.getAudit("REG-EVT-068", "REG-MOD-103"); + globalProvider.getAudit("PACKET_REJECTED", "REG-MOD-103"); showDialog( context: context, builder: (BuildContext context) { diff --git a/lib/ui/post_registration/acknowledgement_page.dart b/lib/ui/post_registration/acknowledgement_page.dart index f9ccba188..255bcfdab 100644 --- a/lib/ui/post_registration/acknowledgement_page.dart +++ b/lib/ui/post_registration/acknowledgement_page.dart @@ -52,7 +52,7 @@ class _AcknowledgementPageState extends State { _printAcknowledgementAudit() async { await context .read() - .getAudit("REG-EVT-012", "REG-MOD-103"); + .getAudit("REG_ACK_PRINT", "REG-MOD-103"); } @override diff --git a/lib/ui/process_ui/generic_process.dart b/lib/ui/process_ui/generic_process.dart index 3928e0d78..97a128c1e 100644 --- a/lib/ui/process_ui/generic_process.dart +++ b/lib/ui/process_ui/generic_process.dart @@ -696,6 +696,7 @@ class _GenericProcessState extends State _nextButtonClickedAudit(process, size); } else { if (globalProvider.newProcessTabIndex == size + 1) { + globalProvider.getAudit("REG_OPERATOR_AUTH_PASSWORD", "REG-MOD-103"); bool isPacketAuthenticated = await _authenticatePacket(context); if (!isPacketAuthenticated) { return; @@ -722,8 +723,18 @@ class _GenericProcessState extends State _resetValuesOnRegistrationComplete(); return; } + // Track if we are about to navigate to the acknowledgement page. + final bool navigatingToAcknowledgement = + globalProvider.newProcessTabIndex == size + 1; + globalProvider.newProcessTabIndex = globalProvider.newProcessTabIndex + 1; + + // After successful authentication and registration submit, + // when moving from Authentication to Acknowledgement, log preview audit. + if (navigatingToAcknowledgement) { + globalProvider.getAudit("REG_OPERATOR_AUTH_PREVIEW", "REG-MOD-103"); + } } } finally { setState(() { diff --git a/lib/ui/process_ui/widgets_mobile/biometric_capture_scan_block_portrait.dart b/lib/ui/process_ui/widgets_mobile/biometric_capture_scan_block_portrait.dart index ebda09c44..950a059d9 100644 --- a/lib/ui/process_ui/widgets_mobile/biometric_capture_scan_block_portrait.dart +++ b/lib/ui/process_ui/widgets_mobile/biometric_capture_scan_block_portrait.dart @@ -2985,7 +2985,12 @@ class _BiometricCaptureScanBlockPortraitState MaterialStateProperty.all(const Size(200, 68)), ), onPressed: canProceedToNext() - ? () { + ? () async { + + // Log audit event for moving to next biometric after exceptions + context.read().getAudit( + "REG_BIO_NEXT", "REG-MOD-103"); + List bioAttributes = (widget .field.conditionalBioAttributes!.first!.ageGroup! .compareTo( From fb91079b5aa98ddb6615be081f7c527ae404787c Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Tue, 10 Feb 2026 15:06:09 +0530 Subject: [PATCH 2/5] Resolved code rabbit review comments Signed-off-by: Madhuravas reddy --- .../api_services/MasterDataSyncApi.java | 1 - .../api_services/PacketAuthenticationApi.java | 6 +++--- .../api_services/UserDetailsApi.java | 2 +- .../clientmanager/constant/AuditEvent.java | 14 +++++++------- .../clientmanager/service/PacketServiceImpl.java | 12 ++++++++---- .../service/PreCheckValidatorServiceImpl.java | 6 +++++- .../service/RegistrationServiceImpl.java | 10 +++++----- 7 files changed, 29 insertions(+), 22 deletions(-) diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java index 3cebf8930..e849627ed 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java @@ -241,7 +241,6 @@ public void getMasterDataSync(@NonNull Boolean isManualSync, @NonNull String job try { masterDataService.syncMasterData(() -> { auditManagerService.audit(AuditEvent.SYNC_MASTER_DATA,Components.REGISTRATION); - auditManagerService.audit(AuditEvent.SYNC_DEVICE_DETAILS, Components.REGISTRATION); Log.i(TAG, "Master Data Sync Completed."); result.success(syncResult("MasterDataSync", 2, masterDataService.onResponseComplete())); }, 0, isManualSync, jobId); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java index d88a5dd16..e8af251f1 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java @@ -116,7 +116,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.SYNC_COMPLETED) || status.equals(PacketTaskStatus.SYNC_ALREADY_COMPLETED)) { remainingPack[1] += 1; - auditManagerService.audit(AuditEvent.PACKET_SYNCED_TO_SERVER, Components.REGISTRATION); + auditManagerService.audit(AuditEvent.PACKET_SYNCED_TO_SERVER, Components.REG_PACKET_LIST); } remainingPack[0] -= 1; @@ -168,7 +168,7 @@ public void inProgress(String RID) { public void onComplete(String RID, PacketTaskStatus status) { if (status.equals(PacketTaskStatus.UPLOAD_COMPLETED) || status.equals(PacketTaskStatus.UPLOAD_ALREADY_COMPLETED)) { remainingPack[1] += 1; - auditManagerService.audit(AuditEvent.PACKET_UPLOADED, Components.REGISTRATION); + auditManagerService.audit(AuditEvent.PACKET_UPLOADED, Components.REG_PACKET_LIST); } remainingPack[0] -= 1; @@ -216,7 +216,7 @@ public void getAllRegistrationPacket(@NonNull PacketAuthPigeon.Result> result) { - auditManagerService.audit(AuditEvent.PACKET_RETRIVE, Components.REGISTRATION); + auditManagerService.audit(AuditEvent.PACKET_RETRIEVE, Components.REGISTRATION); List packets = new ArrayList(); try { List allRegistration = packetService.getRegistrationsByStatus(PacketClientStatus.CREATED.name(), 40); diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java index 5d0209c2b..e06ba04cc 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java @@ -69,7 +69,7 @@ public void validateUser(@NonNull String username, @NonNull String langCode, @No result.success(user); return; } - auditManagerService.audit(AuditEvent.VALIDATE_USER_CRED, Components.LOGIN); + auditManagerService.audit(AuditEvent.VALIDATE_USER_ID, Components.LOGIN); UserDetail userDetail = loginService.getUserDetailsByUserId(username); CenterMachineDto centerMachineDto = this.masterDataService.getRegistrationCenterMachineDetails(); boolean centerStatus = true; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java index 95d4115e2..fc1db3ad8 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java @@ -29,7 +29,7 @@ public enum AuditEvent { ABOUT_CLIENT("REG-AUTH-003", USER_EVENT.getCode(), "ABOUT_CLIENT", "Press and hold on logo to navigate: About activity"), LOGOUT_USER("REG-AUTH-009", USER_EVENT.getCode(), "LOGOUT_USER", "Logout"), USER_STATUS_FETCH("REG-AUTH-011", USER_EVENT.getCode(), "USER_STATUS_FETCH", "Fetching User Status"), - VALIDATE_USER_CRED("REG-AUTH-012", USER_EVENT.getCode(), "VALIDATE_USER_CREDENTIALS", "Validating User credentials"), + VALIDATE_USER_ID("REG-AUTH-012", USER_EVENT.getCode(), "VALIDATE_USER_ID", "Validating User identifier"), FETCH_USR_DET("REG-AUTH-013", USER_EVENT.getCode(), "FETCH_USER_DETAILS", "Fetching User Details"), FETCH_CNTR_NAME("REG-AUTH-014", USER_EVENT.getCode(), "FETCH_CENTER_NAME", "Fetching Center Name"), FETCH_CNTR_DET("REG-AUTH-015", USER_EVENT.getCode(), "FETCH_CENTER_DETAILS", "Fetching Center Details"), @@ -66,7 +66,7 @@ public enum AuditEvent { PACKET_UPDATE("REG-PKT-002", USER_EVENT.getCode(), "PACKET_UPDATE", "Packets which are in created state are updated"), UPLOAD_PACKET("REG-UPL-PKT-001", USER_EVENT.getCode(), "UPLOAD_PACKET", "Upload packet clicked"), SYNC_AND_UPLOAD_PACKET("REG-PKT-003", USER_EVENT.getCode(), "SYNC_AND_UPLOAD_PACKET", "sync and upload started"), - PACKET_RETRIVE("REG-PKT-004", USER_EVENT.getCode(), "PACKET_RETRIVE", "Packets which are in created state for approval are retrived"), + PACKET_RETRIEVE("REG-PKT-004", USER_EVENT.getCode(), "PACKET_RETRIEVE", "Packets which are in created state for approval are retrieved"), //JOB_SERVICE TRIGGER_JOB("REG-JOB-001", USER_EVENT.getCode(), "TRIGGER_JOB", "Trigger job service clicked"), @@ -173,10 +173,10 @@ public enum AuditEvent { REG_ACK_PRINT("REG-EVT-056", USER_EVENT.getCode(), "REG_ACK_PRINT", "Print receipt"), // Registration Packet Creation - PACKET_CREATION_SUCCESS("REG-EVT-066", USER_EVENT.getCode(), "PACKET_CREATION_SUCCESS","Packet Succesfully Created"), - PACKET_ENCRYPTED("REG-EVT-067", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Sucessfully"), - PACKET_UPLOADED("REG-EVT-068", USER_EVENT.getCode(), "PACKET_UPLOADED", "Packet Uploaded Successfully"), - PACKET_SYNCED_TO_SERVER("REG-EVT-069", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Sucesfully"), + PACKET_CREATION_SUCCESS("REG-EVT-078", USER_EVENT.getCode(), "PACKET_CREATION_SUCCESS","Packet Succesfully Created"), + PACKET_ENCRYPTED("REG-EVT-079", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Sucessfully"), + PACKET_UPLOADED("REG-EVT-080", USER_EVENT.getCode(), "PACKET_UPLOADED", "Packet Uploaded Successfully"), + PACKET_SYNCED_TO_SERVER("REG-EVT-081", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Sucesfully"), PACKET_APPROVED("REG-EVT-071", USER_EVENT.getCode(), "PACKET_APPROVED", "Packet Approved Successfully"), PACKET_REJECTED("REG-EVT-072", USER_EVENT.getCode(), "PACKET_REJECTED", "Packet Rejected Successfully"), PACKET_INTERNAL_ERROR("REG-EVT-074", USER_EVENT.getCode(), "PACKET_INTERNAL_ERROR", "Packet Creation Error"), @@ -189,7 +189,7 @@ public enum AuditEvent { REG_BIO_NEXT("REG-EVT-037", USER_EVENT.getCode(), "REG_BIO_NEXT", "Click Next to capture the next biometric"), REG_BIO_EXCEPTION_REMOVING("REG-EVT-065", USER_EVENT.getCode(), "REG_BIO_EXCEPTION_REMOVING", "Biometric Exceptions: Removing"), REG_BIO_LEFT_SLAP_SCAN("REG-EVT-030", USER_EVENT.getCode(), "REG_BIO_LEFT_SLAP_SCAN", "Fingerprints: Scan of left slap"), - REG_BIO_SCAN("REG-EVT-030", USER_EVENT.getCode(), "REG_BIO_SCAN", "Fingerprints: Scan of %s"), + REG_BIO_SCAN("REG-EVT-092", USER_EVENT.getCode(), "REG_BIO_SCAN", "Fingerprints: Scan of %s"), REG_BIO_CAPTURE_NEXT("REG-EVT-041", USER_EVENT.getCode(), "REG_BIO_CAPTURE_NEXT", "Click of Next after capturing Biometrics"); AuditEvent(String id, String type, String name, String description) { diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java index dc8f911f6..23cf233dd 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java @@ -425,7 +425,6 @@ public boolean validatingLastExportDuration() { @Override public boolean isMaxPacketCountLimitReached() { try { - auditManagerService.audit(AuditEvent.SYNC_PKT_COUNT_VALIDATE, Components.REGISTRATION); String maxCountStr = globalParamRepository.getCachedStringGlobalParam( RegistrationConstants.REG_PAK_MAX_CNT_OFFLINE_FREQ); @@ -440,11 +439,16 @@ public boolean isMaxPacketCountLimitReached() { int yetToExportCount = registrationRepository.getYetToExportCount(); - if (yetToExportCount >= maxCount) { - return true; + boolean limitReached = yetToExportCount >= maxCount; + + // Audit after successful validation; don't let audit failures skip validation result. + try { + auditManagerService.audit(AuditEvent.SYNC_PKT_COUNT_VALIDATE, Components.REGISTRATION); + } catch (Exception auditEx) { + Log.e(TAG, "Failed to audit SYNC_PKT_COUNT_VALIDATE", auditEx); } - return false; + return limitReached; } catch (NumberFormatException ex) { Log.e(TAG, "Invalid REG_PAK_MAX_CNT_OFFLINE_FREQ configuration", ex); diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java index 0acbc5724..5125f875c 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java @@ -81,7 +81,11 @@ public PreCheckValidatorServiceImpl( public void validateSyncStatus() throws Exception { try { validatingSyncJobsConfig(); - auditManagerService.audit(AuditEvent.SYNC_INFO_VALIDATE, Components.JOB_SERVICE); + try { + auditManagerService.audit(AuditEvent.SYNC_INFO_VALIDATE, Components.JOB_SERVICE); + } catch (Exception auditEx) { + Log.e(TAG, "Audit logging failed for SYNC_INFO_VALIDATE", auditEx); + } } catch (ClientCheckedException e) { Log.e(TAG, "Sync status validation failed", e); throw e; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index 1d8334b5d..d191f7a67 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -305,12 +305,12 @@ public void submitRegistrationDto(String makerName) throws Exception { this.registrationDto.getProcess(), true, centerMachineDto.getMachineRefId()); - // Log packet encryption success - auditManagerService.audit(AuditEvent.PACKET_ENCRYPTED, Components.REGISTRATION); - // Log packet zipped successfully - auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ZIP, Components.REGISTRATION); + if (containerPath != null && !containerPath.trim().isEmpty()) { + // Log packet encryption success + auditManagerService.audit(AuditEvent.PACKET_ENCRYPTED, Components.REGISTRATION); + // Log packet zipped successfully + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ZIP, Components.REGISTRATION); - if (containerPath != null || !containerPath.trim().isEmpty()) { String packetId = containerPath.substring(containerPath.lastIndexOf("/") + 1); packetId = packetId.replace(".zip", ""); this.registrationDto.setPacketId(packetId); From ce06d2905a1559d6daca3be499c7cb3919434ea4 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Tue, 10 Feb 2026 15:38:44 +0530 Subject: [PATCH 3/5] resolved code rabbit review comments Signed-off-by: Madhuravas reddy --- .../registration_client/api_services/MasterDataSyncApi.java | 6 +++++- .../registration/clientmanager/constant/AuditEvent.java | 6 +++--- .../clientmanager/service/PreCheckValidatorServiceImpl.java | 6 +++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java index e849627ed..715220997 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/MasterDataSyncApi.java @@ -435,7 +435,11 @@ public void getNextSyncTimeByJobId(@NonNull String jobId, @NonNull MasterDataSyn @Override public void getActiveSyncJobs(@NonNull MasterDataSyncPigeon.Result> result) { - auditManagerService.audit(AuditEvent.SYNCJOB_INFO_FETCH, Components.JOB_SERVICE); + try { + auditManagerService.audit(AuditEvent.SYNCJOB_INFO_FETCH, Components.JOB_SERVICE); + } catch (Exception e) { + Log.e(TAG, "Audit logging failed for SYNCJOB_INFO_FETCH", e); + } List list = syncJobDefRepository.getActiveSyncJobs(); List value = new ArrayList<>(); try { diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java index fc1db3ad8..d7b7fd523 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java @@ -173,10 +173,10 @@ public enum AuditEvent { REG_ACK_PRINT("REG-EVT-056", USER_EVENT.getCode(), "REG_ACK_PRINT", "Print receipt"), // Registration Packet Creation - PACKET_CREATION_SUCCESS("REG-EVT-078", USER_EVENT.getCode(), "PACKET_CREATION_SUCCESS","Packet Succesfully Created"), - PACKET_ENCRYPTED("REG-EVT-079", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Sucessfully"), + PACKET_CREATION_SUCCESS("REG-EVT-078", USER_EVENT.getCode(), "PACKET_CREATION_SUCCESS","Packet Successfully Created"), + PACKET_ENCRYPTED("REG-EVT-079", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Successfully"), PACKET_UPLOADED("REG-EVT-080", USER_EVENT.getCode(), "PACKET_UPLOADED", "Packet Uploaded Successfully"), - PACKET_SYNCED_TO_SERVER("REG-EVT-081", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Sucesfully"), + PACKET_SYNCED_TO_SERVER("REG-EVT-081", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Successfully"), PACKET_APPROVED("REG-EVT-071", USER_EVENT.getCode(), "PACKET_APPROVED", "Packet Approved Successfully"), PACKET_REJECTED("REG-EVT-072", USER_EVENT.getCode(), "PACKET_REJECTED", "Packet Rejected Successfully"), PACKET_INTERNAL_ERROR("REG-EVT-074", USER_EVENT.getCode(), "PACKET_INTERNAL_ERROR", "Packet Creation Error"), diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java index 5125f875c..545101d1d 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java @@ -293,7 +293,11 @@ public void validateCenterToMachineDistance(Double machineLongitude, Double mach context.getString(R.string.err_003)); } - auditManagerService.audit(AuditEvent.SYNC_GEO_VALIDATE, Components.REGISTRATION); + try { + auditManagerService.audit(AuditEvent.SYNC_GEO_VALIDATE, Components.REGISTRATION); + } catch (Exception auditEx) { + Log.e(TAG, "Audit logging failed for SYNC_GEO_VALIDATE", auditEx); + } } catch (NumberFormatException e) { Log.e(TAG, "Invalid number format in center coordinates or max distance configuration", e); From 10bd383a7d8956221e29ca6921bc48633131ba1c Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Thu, 19 Feb 2026 18:30:27 +0530 Subject: [PATCH 4/5] Resolved review comments Signed-off-by: Madhuravas reddy --- .../api_services/PacketAuthenticationApi.java | 16 +--- .../api_services/UserDetailsApi.java | 1 - .../registration_client/utils/BatchJob.java | 2 +- .../clientmanager/config/AppModule.java | 4 +- .../clientmanager/constant/AuditEvent.java | 3 +- .../service/AuditManagerServiceImpl.java | 94 ++++++++++--------- .../service/MasterDataServiceImpl.java | 9 +- .../service/PacketServiceImpl.java | 8 +- .../service/PreCheckValidatorServiceImpl.java | 12 +-- 9 files changed, 70 insertions(+), 79 deletions(-) diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java index e8af251f1..5090346c6 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java @@ -193,7 +193,7 @@ public void onComplete(String RID, PacketTaskStatus status) { }); } catch (Exception e) { Log.e(getClass().getSimpleName(), e.getMessage()); - auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REGISTRATION); + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REGISTRATION, e.getMessage()); } } } @@ -234,11 +234,8 @@ public void getAllCreatedRegistrationPacket(@NonNull PacketAuthPigeon.Result result) { registrationRepository.updateStatus(packetId, serverStatus, clientStatus); - if (PacketClientStatus.APPROVED.name().equals(clientStatus)) { - auditManagerService.audit(AuditEvent.PACKET_APPROVED, Components.REGISTRATION); - } else if (PacketClientStatus.REJECTED.name().equals(clientStatus)) { - auditManagerService.audit(AuditEvent.PACKET_REJECTED, Components.REGISTRATION); - } + auditManagerService.auditWithArguments(AuditEvent.PACKET_STATUS_UPDATE, + Components.REGISTRATION.getId(), Components.REGISTRATION.getName(), clientStatus); result.success(null); } @@ -246,11 +243,8 @@ public void updatePacketStatus(@NonNull String packetId, @Nullable String server public void supervisorReview(@NonNull String packetId, @NonNull String supervisorStatus, @NonNull String supervisorComment, @NonNull PacketAuthPigeon.Result result) { auditManagerService.audit(AuditEvent.PACKET_UPDATE, Components.REGISTRATION); registrationRepository.updateSupervisorReview(packetId, supervisorStatus, supervisorComment); - if (PacketClientStatus.APPROVED.name().equals(supervisorStatus)) { - auditManagerService.audit(AuditEvent.PACKET_APPROVED, Components.REGISTRATION); - } else if (PacketClientStatus.REJECTED.name().equals(supervisorStatus)) { - auditManagerService.audit(AuditEvent.PACKET_REJECTED, Components.REGISTRATION); - } + auditManagerService.auditWithArguments(AuditEvent.PACKET_STATUS_UPDATE, + Components.REGISTRATION.getId(), Components.REGISTRATION.getName(), supervisorStatus); result.success(null); } } diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java index e06ba04cc..61f73df39 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/UserDetailsApi.java @@ -49,7 +49,6 @@ public UserDetailsApi(LoginService loginService, RegistrationCenterRepository re @Override public void validateUser(@NonNull String username, @NonNull String langCode, @NonNull UserPigeon.Result result) { auditManagerService.audit(AuditEvent.USER_STATUS_FETCH, Components.LOGIN); - auditManagerService.audit(AuditEvent.FETCH_USR_DET, Components.LOGIN); if (username == null || username.trim().length() == 0) { UserPigeon.User user = new UserPigeon.User.Builder() .setUserId(username) diff --git a/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java b/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java index 525b1a56d..dfc74924a 100644 --- a/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java +++ b/android/app/src/main/java/io/mosip/registration_client/utils/BatchJob.java @@ -192,7 +192,7 @@ public void onComplete(String RID, PacketTaskStatus status) { } catch (Exception e) { syncAndUploadInProgressStatus = false; Log.e(getClass().getSimpleName(), e.getMessage()); - auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REG_PACKET_LIST); + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REG_PACKET_LIST, e.getMessage()); } } } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java index 894ce30e2..a6fe91989 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/config/AppModule.java @@ -172,13 +172,13 @@ public MasterDataService provideMasterDataService(ObjectMapper objectMapper, Syn LanguageRepository languageRepository, JobManagerService jobManagerService, FileSignatureDao fileSignatureDao, JobTransactionService jobTransactionService, PermittedLocalConfigRepository permittedLocalConfigRepository, - LocalConfigDAO localConfigDAO) { + LocalConfigDAO localConfigDAO, AuditManagerService auditManagerService) { return new MasterDataServiceImpl(appContext, objectMapper, syncRestService, clientCryptoManagerService, machineRepository, reasonListRepository, registrationCenterRepository, documentTypeRepository, applicantValidDocRepository, templateRepository, dynamicFieldRepository, locationRepository, globalParamRepository, identitySchemaRepository, blocklistedWordRepository, syncJobDefRepository, userDetailRepository, - certificateManagerService, languageRepository, jobManagerService, fileSignatureDao, jobTransactionService, permittedLocalConfigRepository, localConfigDAO); + certificateManagerService, languageRepository, jobManagerService, fileSignatureDao, jobTransactionService, permittedLocalConfigRepository, localConfigDAO, auditManagerService); } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java index d7b7fd523..1fe07db8d 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/AuditEvent.java @@ -177,8 +177,7 @@ public enum AuditEvent { PACKET_ENCRYPTED("REG-EVT-079", USER_EVENT.getCode(), "PACKET_ENCRYPTED", "Packet Encrypted Successfully"), PACKET_UPLOADED("REG-EVT-080", USER_EVENT.getCode(), "PACKET_UPLOADED", "Packet Uploaded Successfully"), PACKET_SYNCED_TO_SERVER("REG-EVT-081", USER_EVENT.getCode(), "PACKET_SYNCED_TO_SERVER", "Packet Synced to Server Successfully"), - PACKET_APPROVED("REG-EVT-071", USER_EVENT.getCode(), "PACKET_APPROVED", "Packet Approved Successfully"), - PACKET_REJECTED("REG-EVT-072", USER_EVENT.getCode(), "PACKET_REJECTED", "Packet Rejected Successfully"), + PACKET_STATUS_UPDATE("REG-EVT-071", USER_EVENT.getCode(), "PACKET_APPROVED", "Packet %s Successfully"), PACKET_INTERNAL_ERROR("REG-EVT-074", USER_EVENT.getCode(), "PACKET_INTERNAL_ERROR", "Packet Creation Error"), PACKET_INTERNAL_ZIP("REG-EVT-075", USER_EVENT.getCode(), "PACKET_INTERNAL_ZIP", "Packet internally zipped successfully"), PACKET_DEMO_JSON_CREATED("REG-EVT-076", USER_EVENT.getCode(), "PACKET_DEMO_JSON_CREATED", "Packet Demographic JSON created successfully"), diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/AuditManagerServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/AuditManagerServiceImpl.java index d12bbe8bd..564bcd26a 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/AuditManagerServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/AuditManagerServiceImpl.java @@ -136,54 +136,58 @@ public List getAuditLogs(long fromDateTime) { } private void addAudit(AuditEvent auditEventEnum, String appModuleId, String appModuleName, String refId, String refIdType, String errorMsg, String... arguments) { - SharedPreferences sharedPreferences = this.context.getSharedPreferences(this.context.getString(R.string.app_name), - Context.MODE_PRIVATE); + try { + SharedPreferences sharedPreferences = this.context.getSharedPreferences(this.context.getString(R.string.app_name), + Context.MODE_PRIVATE); + + // Use device Android version for hostName in format Android_{deviceAndroidVersion} + // If Build.VERSION.RELEASE is null, use the default property name + String androidVersion = Build.VERSION.RELEASE; + String model = Build.MODEL; + String hostName = (androidVersion != null && model != null) ? model + "|" + androidVersion : + globalParamRepository.getCachedStringDefaultHostName(); + String hostIP = globalParamRepository.getCachedStringDefaultHostIp(); + String sessionUserId = sharedPreferences.getString(SessionManager.USER_NAME, null); + String sessionUserName = sharedPreferences.getString(SessionManager.USER_NAME, null); + String applicationId = globalParamRepository.getCachedStringAppId(); + String applicationName = globalParamRepository.getCachedStringAppName(); + String description = auditEventEnum.getDescription() == null? "NA" : auditEventEnum.getDescription(); + + if (description.contains("%s") && arguments != null && arguments.length > 0) { + try { + description = String.format(description, (Object[]) arguments); + } catch (IllegalArgumentException ex) { + Log.e(TAG, "Invalid audit description format: " + description + + ", arguments=" + Arrays.toString(arguments), ex); + } + } - // Use device Android version for hostName in format Android_{deviceAndroidVersion} - // If Build.VERSION.RELEASE is null, use the default property name - String androidVersion = Build.VERSION.RELEASE; - String model = Build.MODEL; - String hostName = (androidVersion != null && model != null) ? model + "|" + androidVersion : - globalParamRepository.getCachedStringDefaultHostName(); - String hostIP = globalParamRepository.getCachedStringDefaultHostIp(); - String sessionUserId = sharedPreferences.getString(SessionManager.USER_NAME, null); - String sessionUserName = sharedPreferences.getString(SessionManager.USER_NAME, null); - String applicationId = globalParamRepository.getCachedStringAppId(); - String applicationName = globalParamRepository.getCachedStringAppName(); - String description = auditEventEnum.getDescription() == null? "NA" : auditEventEnum.getDescription(); - - if (description.contains("%s") && arguments != null && arguments.length > 0) { - try { - description = String.format(description, (Object[]) arguments); - } catch (IllegalArgumentException ex) { - Log.e(TAG, "Invalid audit description format: " + description - + ", arguments=" + Arrays.toString(arguments), ex); + if (errorMsg != null) { + description = String.format(COLON_SEPARATED_DESCRIPTION, description, errorMsg); } - } - if (errorMsg != null) { - description = String.format(COLON_SEPARATED_DESCRIPTION, description, errorMsg); + Audit audit = new Audit( + System.currentTimeMillis(), + auditEventEnum.getId(), + auditEventEnum.getName(), + auditEventEnum.getType(), + System.currentTimeMillis(), + hostName, + hostIP, + applicationId, + applicationName, + sessionUserId, + sessionUserName, + refId, + refIdType, + sessionUserId, + appModuleName, + appModuleId, + description); + + auditRepository.insertAudit(audit); + } catch (Exception ex) { + Log.e(TAG, "Failed to audit event: " + (auditEventEnum != null ? auditEventEnum.getName() : "null"), ex); } - - Audit audit = new Audit( - System.currentTimeMillis(), - auditEventEnum.getId(), - auditEventEnum.getName(), - auditEventEnum.getType(), - System.currentTimeMillis(), - hostName, - hostIP, - applicationId, - applicationName, - sessionUserId, - sessionUserName, - refId, - refIdType, - sessionUserId, - appModuleName, - appModuleId, - description); - - auditRepository.insertAudit(audit); } } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java index d4c89ff20..df8eca3fd 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/MasterDataServiceImpl.java @@ -10,6 +10,8 @@ import io.mosip.registration.clientmanager.BuildConfig; import io.mosip.registration.clientmanager.R; +import io.mosip.registration.clientmanager.constant.AuditEvent; +import io.mosip.registration.clientmanager.constant.Components; import io.mosip.registration.clientmanager.constant.RegistrationConstants; import io.mosip.registration.clientmanager.dao.FileSignatureDao; import io.mosip.registration.clientmanager.dao.LocalConfigDAO; @@ -29,6 +31,7 @@ import io.mosip.registration.clientmanager.entity.RegistrationCenter; import io.mosip.registration.clientmanager.entity.SyncJobDef; import io.mosip.registration.clientmanager.repository.*; +import io.mosip.registration.clientmanager.spi.AuditManagerService; import io.mosip.registration.clientmanager.spi.JobManagerService; import io.mosip.registration.clientmanager.spi.JobTransactionService; import io.mosip.registration.clientmanager.spi.MasterDataService; @@ -111,6 +114,7 @@ public class MasterDataServiceImpl implements MasterDataService { private FileSignatureDao fileSignatureDao; private PermittedLocalConfigRepository permittedLocalConfigRepository; private LocalConfigDAO localConfigDAO; + private AuditManagerService auditManagerService; private String regCenterId; private String result = ""; SharedPreferences sharedPreferences; @@ -138,7 +142,8 @@ public MasterDataServiceImpl(Context context, ObjectMapper objectMapper, SyncRes FileSignatureDao fileSignatureDao, JobTransactionService jobTransactionService, PermittedLocalConfigRepository permittedLocalConfigRepository, - LocalConfigDAO localConfigDAO) { + LocalConfigDAO localConfigDAO, + AuditManagerService auditManagerService) { this.context = context; this.objectMapper = objectMapper; this.syncRestService = syncRestService; @@ -163,6 +168,7 @@ public MasterDataServiceImpl(Context context, ObjectMapper objectMapper, SyncRes this.jobTransactionService = jobTransactionService; this.permittedLocalConfigRepository = permittedLocalConfigRepository; this.localConfigDAO = localConfigDAO; + this.auditManagerService = auditManagerService; sharedPreferences = this.context.getSharedPreferences( this.context.getString(R.string.app_name), Context.MODE_PRIVATE); @@ -536,6 +542,7 @@ private void saveProcessSpec(IdSchemaResponse idSchemaResponse, String jsonStrin @Override public void syncUserDetails(Runnable onFinish, boolean isManualSync, String jobId) throws Exception { + auditManagerService.audit(AuditEvent.FETCH_USR_DET, Components.LOGIN); String serverVersion = getServerVersionFromConfigs(); if (serverVersion.startsWith(SERVER_VERSION_1_1_5)) { result = ""; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java index 23cf233dd..d3a953064 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PacketServiceImpl.java @@ -441,12 +441,8 @@ public boolean isMaxPacketCountLimitReached() { boolean limitReached = yetToExportCount >= maxCount; - // Audit after successful validation; don't let audit failures skip validation result. - try { - auditManagerService.audit(AuditEvent.SYNC_PKT_COUNT_VALIDATE, Components.REGISTRATION); - } catch (Exception auditEx) { - Log.e(TAG, "Failed to audit SYNC_PKT_COUNT_VALIDATE", auditEx); - } + // Audit after successful validation; + auditManagerService.audit(AuditEvent.SYNC_PKT_COUNT_VALIDATE, Components.REGISTRATION); return limitReached; diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java index 545101d1d..0acbc5724 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/PreCheckValidatorServiceImpl.java @@ -81,11 +81,7 @@ public PreCheckValidatorServiceImpl( public void validateSyncStatus() throws Exception { try { validatingSyncJobsConfig(); - try { - auditManagerService.audit(AuditEvent.SYNC_INFO_VALIDATE, Components.JOB_SERVICE); - } catch (Exception auditEx) { - Log.e(TAG, "Audit logging failed for SYNC_INFO_VALIDATE", auditEx); - } + auditManagerService.audit(AuditEvent.SYNC_INFO_VALIDATE, Components.JOB_SERVICE); } catch (ClientCheckedException e) { Log.e(TAG, "Sync status validation failed", e); throw e; @@ -293,11 +289,7 @@ public void validateCenterToMachineDistance(Double machineLongitude, Double mach context.getString(R.string.err_003)); } - try { - auditManagerService.audit(AuditEvent.SYNC_GEO_VALIDATE, Components.REGISTRATION); - } catch (Exception auditEx) { - Log.e(TAG, "Audit logging failed for SYNC_GEO_VALIDATE", auditEx); - } + auditManagerService.audit(AuditEvent.SYNC_GEO_VALIDATE, Components.REGISTRATION); } catch (NumberFormatException e) { Log.e(TAG, "Invalid number format in center coordinates or max distance configuration", e); From 5ce1c18b4b3298aac112d9181c18e1a81ca67a34 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Thu, 19 Feb 2026 18:54:17 +0530 Subject: [PATCH 5/5] Resolved review comments Signed-off-by: Madhuravas reddy --- .../api_services/PacketAuthenticationApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java index 5090346c6..56f1a2aca 100644 --- a/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java +++ b/android/app/src/main/java/io/mosip/registration_client/api_services/PacketAuthenticationApi.java @@ -193,7 +193,7 @@ public void onComplete(String RID, PacketTaskStatus status) { }); } catch (Exception e) { Log.e(getClass().getSimpleName(), e.getMessage()); - auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REGISTRATION, e.getMessage()); + auditManagerService.audit(AuditEvent.PACKET_INTERNAL_ERROR, Components.REG_PACKET_LIST, e.getMessage()); } } }