Feature 11034: Forgot Password in OSM

Change-Id: I7df89b691f994a4bdf089f1a2677ab61f46b6838
Signed-off-by: jegan <jegan.s@tataelxsi.co.in>
diff --git a/osm_nbi/auth.py b/osm_nbi/auth.py
index a30f60c..7da45db 100644
--- a/osm_nbi/auth.py
+++ b/osm_nbi/auth.py
@@ -544,10 +544,25 @@
             raise
 
     def new_token(self, token_info, indata, remote):
-        new_token_info = self.backend.authenticate(
-            credentials=indata,
-            token_info=token_info,
-        )
+        if indata.get("email_id"):
+            return self.backend.send_email(indata)
+        else:
+            if indata.get("otp"):
+                otp_validation = self.backend.validate_otp(indata)
+                if otp_validation.get("password_change"):
+                    new_token_info = self.backend.authenticate(
+                        credentials=indata,
+                        token_info=token_info,
+                    )
+                    new_token_info["otp"] = "valid"
+                else:
+                    otp_validation["otp"] = "invalid"
+                    return otp_validation
+            else:
+                new_token_info = self.backend.authenticate(
+                    credentials=indata,
+                    token_info=token_info,
+                )
 
         new_token_info["remote_port"] = remote.port
         if not new_token_info.get("expires"):