initial commit
This commit is contained in:
64
src/main/java/com/rit/whatsapp/handler/LoginHandler.java
Normal file
64
src/main/java/com/rit/whatsapp/handler/LoginHandler.java
Normal file
@@ -0,0 +1,64 @@
|
||||
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:");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user