|
|
|
@ -4,7 +4,6 @@ import de.triology.recaptchav2java.ReCaptcha; |
|
|
|
|
import org.airsonic.player.domain.User; |
|
|
|
|
import org.airsonic.player.service.SecurityService; |
|
|
|
|
import org.airsonic.player.service.SettingsService; |
|
|
|
|
import org.apache.commons.lang.RandomStringUtils; |
|
|
|
|
import org.apache.commons.lang.StringUtils; |
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
@ -22,6 +21,7 @@ import javax.mail.internet.MimeMessage; |
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
|
|
import java.security.SecureRandom; |
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
@ -37,6 +37,10 @@ public class RecoverController { |
|
|
|
|
|
|
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(RecoverController.class); |
|
|
|
|
|
|
|
|
|
private static final String SYMBOLS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; |
|
|
|
|
private final SecureRandom random = new SecureRandom(); |
|
|
|
|
private static final int PASSWORD_LENGTH = 32; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private SettingsService settingsService; |
|
|
|
|
@Autowired |
|
|
|
@ -69,7 +73,13 @@ public class RecoverController { |
|
|
|
|
} else if (user.getEmail() == null) { |
|
|
|
|
map.put("error", "recover.error.noemail"); |
|
|
|
|
} else { |
|
|
|
|
String password = RandomStringUtils.randomAlphanumeric(8); |
|
|
|
|
StringBuilder sb = new StringBuilder(PASSWORD_LENGTH); |
|
|
|
|
for(int i=0; i<PASSWORD_LENGTH; i++) { |
|
|
|
|
int index = random.nextInt(SYMBOLS.length()); |
|
|
|
|
sb.append(SYMBOLS.charAt(index)); |
|
|
|
|
} |
|
|
|
|
String password = sb.toString(); |
|
|
|
|
|
|
|
|
|
if (emailPassword(password, user.getUsername(), user.getEmail())) { |
|
|
|
|
map.put("sentTo", user.getEmail()); |
|
|
|
|
user.setLdapAuthenticated(false); |
|
|
|
|