source: trunk/src/org/expeditee/auth/account/Password.java@ 1340

Last change on this file since 1340 was 1340, checked in by bln4, 5 years ago

Progress on the 'Forgot Password' process

File size: 4.1 KB
Line 
1package org.expeditee.auth.account;
2
3import java.io.FileNotFoundException;
4import java.io.IOException;
5import java.security.KeyStoreException;
6import java.security.NoSuchAlgorithmException;
7import java.security.cert.CertificateException;
8import java.sql.SQLException;
9import java.util.Map;
10import java.util.Properties;
11
12import javax.crypto.SecretKey;
13import javax.mail.Message;
14import javax.mail.MessagingException;
15import javax.mail.PasswordAuthentication;
16import javax.mail.Session;
17import javax.mail.Transport;
18import javax.mail.internet.InternetAddress;
19import javax.mail.internet.MimeMessage;
20
21import org.expeditee.auth.AuthenticatorBrowser;
22import org.expeditee.auth.tags.AuthenticationTag;
23import org.expeditee.gui.DisplayController;
24import org.expeditee.gui.FrameIO;
25import org.expeditee.gui.MessageBay;
26
27public class Password {
28 /*
29 * Changes the recorded password for a user in the key store.
30 */
31 public static void changePassword(Map<AuthenticationTag, String> userdata) throws NoSuchAlgorithmException, KeyStoreException, FileNotFoundException, CertificateException, IOException, ClassNotFoundException, SQLException {
32 String username = userdata.get(AuthenticationTag.Username);
33 String password = userdata.get(AuthenticationTag.Password);
34 String newpassword = userdata.get(AuthenticationTag.NewPassword);
35
36 final SecretKey key = AuthenticatorBrowser.getInstance().getSecretKey(username, password);
37 if (key == null) {
38 MessageBay.errorMessage("The username + existing password combination was incorrect.");
39 } else {
40 AuthenticatorBrowser.getInstance().putKey(username, newpassword, key);
41 MessageBay.displayMessage("Password changed successfully.");
42 DisplayController.setCurrentFrame(FrameIO.LoadFrame("multiuser1"), true);
43 }
44 }
45
46 public static void generateAndDeliverIntergalacticNumber(Map<AuthenticationTag, String> userData) {
47 String username = userData.get(AuthenticationTag.Username);
48 String email = userData.get(AuthenticationTag.Email);
49 try {
50 // Generate message text.
51 String intergalacticNumber = AuthenticatorBrowser.getInstance().newIntergalacticNumber(username, email);
52 String nl = System.getProperty("line.separator");
53 StringBuilder sb = new StringBuilder();
54 sb.append("You are receiving this email because someone is attempting to reset your Expeditee password." + nl);
55 sb.append("If you did not make this request then no action is required." + nl);
56 sb.append("If it was you who made this request, the following string of characters is your intergalactic number: " + intergalacticNumber + nl);
57
58 // Establish properties for email.
59 Properties properties = System.getProperties();
60 properties.setProperty("mail.transport.protocol", "smtp");
61 properties.setProperty("mail.smtp.host", "smtp.gmail.com");
62 properties.setProperty("mail.smtp.port", "465");
63 properties.setProperty("mail.smtp.starttls.enable", "true");
64 properties.setProperty("mail.smtp.auth", "true");
65 properties.setProperty("mail.smtp.debug", "true");
66 properties.setProperty("mail.smtp.auth", "true");
67 properties.setProperty("mail.smtp.socketFactory.port", "465");
68 properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
69 properties.setProperty("mail.smtp.socketFactory.fallback", "false");
70
71 Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
72 @Override
73 protected PasswordAuthentication getPasswordAuthentication() {
74 return new PasswordAuthentication("noreply.expeditee", "intergalacticnumber");
75 };
76 });
77
78 // construct email message
79 final MimeMessage message = new MimeMessage(session);
80 message.setFrom(new InternetAddress("[email protected]"));
81 message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
82 message.setSubject("Expeditee Password Recovery");
83 message.setText(sb.toString());
84
85 // send email message
86 Transport.send(message);
87 } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | ClassNotFoundException
88 | IOException | SQLException | MessagingException e) {
89 e.printStackTrace();
90 }
91 }
92}
Note: See TracBrowser for help on using the repository browser.