@ -4,7 +4,6 @@ import de.triology.recaptchav2java.ReCaptcha;
import org.airsonic.player.domain.User ;
import org.airsonic.player.domain.User ;
import org.airsonic.player.service.SecurityService ;
import org.airsonic.player.service.SecurityService ;
import org.airsonic.player.service.SettingsService ;
import org.airsonic.player.service.SettingsService ;
import org.apache.commons.lang.RandomStringUtils ;
import org.apache.commons.lang.StringUtils ;
import org.apache.commons.lang.StringUtils ;
import org.slf4j.Logger ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.slf4j.LoggerFactory ;
@ -22,6 +21,7 @@ import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import javax.servlet.http.HttpServletResponse ;
import java.security.SecureRandom ;
import java.util.Date ;
import java.util.Date ;
import java.util.HashMap ;
import java.util.HashMap ;
import java.util.Map ;
import java.util.Map ;
@ -37,6 +37,10 @@ public class RecoverController {
private static final Logger LOG = LoggerFactory . getLogger ( RecoverController . class ) ;
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
@Autowired
private SettingsService settingsService ;
private SettingsService settingsService ;
@Autowired
@Autowired
@ -69,7 +73,13 @@ public class RecoverController {
} else if ( user . getEmail ( ) = = null ) {
} else if ( user . getEmail ( ) = = null ) {
map . put ( "error" , "recover.error.noemail" ) ;
map . put ( "error" , "recover.error.noemail" ) ;
} else {
} 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 ( ) ) ) {
if ( emailPassword ( password , user . getUsername ( ) , user . getEmail ( ) ) ) {
map . put ( "sentTo" , user . getEmail ( ) ) ;
map . put ( "sentTo" , user . getEmail ( ) ) ;
user . setLdapAuthenticated ( false ) ;
user . setLdapAuthenticated ( false ) ;