Changeset 1348 for trunk


Ignore:
Timestamp:
05/02/19 15:17:25 (5 years ago)
Author:
bln4
Message:

Added code for the ResetPassword action.
Also the beginnings of the code in the Password class for regaining access to account.

Location:
trunk/src/org/expeditee/auth
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/auth/Actions.java

    r1340 r1348  
    263263                if (userdata.isPresent()) {
    264264                        Map<AuthenticationTag, String> userData = userdata.get();
    265                        
    266265                        String username = userData.get(AuthenticationTag.Username);
    267                         Path credentialsDirPath = Paths.get(FrameIO.PROFILE_PATH).resolve(username).resolve(username + "-credentials");
    268                         Path credentialsFilePath = credentialsDirPath.resolve("credentials.inf");
    269                         String fileName = null;
    270                         if (credentialsFilePath.toFile().exists()) {
    271                                 try (Scanner in = new Scanner(credentialsFilePath)) {
    272                                         fileName = in.nextLine();
    273                                 } catch (IOException e) {
    274                                         MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
    275                                         return;
    276                                 }
    277                         } else {
     266                        String email = getEmailFromUsername(username);
     267                        userData.put(AuthenticationTag.Email, email);
     268                        Password.generateAndDeliverIntergalacticNumber(userData);
     269                        MessageBay.displayMessage("A Intergalactic number has been sent to the email associated with your account.  Enter it below to proceed.");
     270                }
     271        }
     272       
     273        public static void AuthResetPasswordPt2() {
     274                Collection<Text> textItems = DisplayController.getCurrentFrame().getTextItems();
     275                Optional<Map<AuthenticationTag, String>> userdata = AuthenticationTag.fetchUserData(textItems, false, AuthenticationTag.Username,
     276                                AuthenticationTag.IntergalacticNumber, AuthenticationTag.NewPassword, AuthenticationTag.NewPasswordAgain);
     277                if (userdata.isPresent()) {
     278                        Map<AuthenticationTag, String> userData = userdata.get();
     279                        String username = userData.get(AuthenticationTag.Username);
     280                        String email = getEmailFromUsername(username);
     281                        userData.put(AuthenticationTag.Email, email);
     282                        Password.confirmIntergalacticNumberAndGenerateSubstituteAccount(userData);
     283                }
     284        }
     285       
     286        private static String getEmailFromUsername(String username) {
     287                Collection<Text> textItems = DisplayController.getCurrentFrame().getTextItems();
     288                Path credentialsDirPath = Paths.get(FrameIO.PROFILE_PATH).resolve(username).resolve(username + "-credentials");
     289                Path credentialsFilePath = credentialsDirPath.resolve("credentials.inf");
     290                String fileName = null;
     291                if (credentialsFilePath.toFile().exists()) {
     292                        try (Scanner in = new Scanner(credentialsFilePath)) {
     293                                fileName = in.nextLine();
     294                        } catch (IOException e) {
    278295                                MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
    279                                 return;
    280                         }
    281                        
    282                         int number = Integer.parseInt(fileName.replace(".exp", ""));
    283                         Frame credentialsFrame = FrameIO.LoadFrame(username + number, FrameIO.PROFILE_PATH);
    284                         textItems = credentialsFrame.getTextItems();
    285                         textItems.removeIf(text -> !text.getText().startsWith("Email: "));
    286                         if (textItems.isEmpty()) {
    287                                 MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
    288                                 return;
    289                         } else {
    290                                 Text emailText = textItems.iterator().next();
    291                                 String email = emailText.getText().replace("Email: ", "");
    292                                 userData.put(AuthenticationTag.Email, email);
    293                                 Password.generateAndDeliverIntergalacticNumber(userData);
    294                                 MessageBay.displayMessage("A Intergalactic number has been sent to the email associated with your account.  Enter it below to proceed.");
    295                         }
    296                 }
    297         }
    298        
    299         public static void AuthResetPasswordPt2() {
    300                 MessageBay.displayMessage("AuthResetPasswordPt2");
     296                                return null;
     297                        }
     298                } else {
     299                        MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
     300                        return null;
     301                }
     302               
     303                int number = Integer.parseInt(fileName.replace(".exp", ""));
     304                Frame credentialsFrame = FrameIO.LoadFrame(username + number, FrameIO.PROFILE_PATH);
     305                textItems = credentialsFrame.getTextItems();
     306                textItems.removeIf(text -> !text.getText().startsWith("Email: "));
     307                if (textItems.isEmpty()) {
     308                        MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
     309                        return null;
     310                } else {
     311                        Text emailText = textItems.iterator().next();
     312                        String email = emailText.getText().replace("Email: ", "");
     313                        return email;
     314                }
    301315        }
    302316       
  • trunk/src/org/expeditee/auth/account/Password.java

    r1340 r1348  
    9090                }
    9191        }
     92       
     93        public static void confirmIntergalacticNumberAndGenerateSubstituteAccount(Map<AuthenticationTag, String> userData) {
     94                String username = userData.get(AuthenticationTag.Username);
     95                String email = userData.get(AuthenticationTag.Email);
     96                String intergalacticNumber = userData.get(AuthenticationTag.IntergalacticNumber);
     97                String newPassword = userData.get(AuthenticationTag.NewPassword);
     98                String newPasswordAgain = userData.get(AuthenticationTag.NewPasswordAgain);
     99               
     100                try {
     101                        boolean match = AuthenticatorBrowser.getInstance().confirmIntergalaticNumber(username, email, intergalacticNumber);             
     102                        if (match) {
     103                                MessageBay.displayMessage(":)");
     104                        } else {
     105                                MessageBay.displayMessage(":(");
     106                        }
     107                } catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | ClassNotFoundException
     108                                | IOException | SQLException e) {
     109                        e.printStackTrace();
     110                }
     111        }
    92112}
Note: See TracChangeset for help on using the changeset viewer.