Files
RITz-WhatsApp-Bot/src/main/java/com/rit/whatsapp/handler/LoginHandler.java
2026-08-19 11:03:29 +05:30

65 lines
2.7 KiB
Java

package com.rit.whatsapp.handler;
import com.rit.whatsapp.model.UserState;
import com.rit.whatsapp.service.ImsApiService;
import com.rit.whatsapp.service.SessionService;
import com.rit.whatsapp.service.WhatsAppMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class LoginHandler {
private final WhatsAppMessageService messageService;
private final SessionService sessionService;
private final ImsApiService imsApiService;
private final StudentMenuHandler studentMenuHandler;
@Autowired
public LoginHandler(WhatsAppMessageService messageService,
SessionService sessionService,
ImsApiService imsApiService,
StudentMenuHandler studentMenuHandler) {
this.messageService = messageService;
this.sessionService = sessionService;
this.imsApiService = imsApiService;
this.studentMenuHandler = studentMenuHandler;
}
public void startLoginFlow(String phoneNumber) {
sessionService.setUserState(phoneNumber, UserState.AWAITING_LOGIN_ID);
messageService.sendMessage(phoneNumber, "Welcome to RIT Digital Assistant! 🎓\n\nPlease enter your IMS User ID to login:");
}
public void handleLoginIdInput(String phoneNumber, String imsId) {
sessionService.setTempLoginId(phoneNumber, imsId);
sessionService.setUserState(phoneNumber, UserState.AWAITING_LOGIN_PASSCODE);
messageService.sendMessage(phoneNumber, "Thanks. Now, please enter your IMS Passcode:");
}
public void handlePasscodeInput(String phoneNumber, String passcode) {
String imsId = sessionService.getTempLoginId(phoneNumber);
messageService.sendMessage(phoneNumber, "Authenticating with IMS... ⏳");
String imsSessionToken = imsApiService.authenticate(imsId, passcode);
if (imsSessionToken != null) {
// Authentication successful
sessionService.authenticateUser(phoneNumber, imsId, passcode, imsSessionToken);
sessionService.clearTempLoginId(phoneNumber);
sessionService.resetState(phoneNumber); // Reset the flow state
messageService.sendMessage(phoneNumber, "✅ Login Successful!");
// Show the main menu
studentMenuHandler.sendMainMenu(phoneNumber);
} else {
// Authentication failed
sessionService.clearTempLoginId(phoneNumber);
sessionService.setUserState(phoneNumber, UserState.AWAITING_LOGIN_ID);
messageService.sendMessage(phoneNumber, "❌ Login Failed. Invalid ID or Passcode. Please try again.\n\nEnter your IMS User ID:");
}
}
}