Rohan Sircar
4 years ago
3 changed files with 103 additions and 5 deletions
@ -0,0 +1,61 @@ |
|||||
|
package db.migration; |
||||
|
|
||||
|
import java.io.BufferedWriter; |
||||
|
import java.io.FileWriter; |
||||
|
import java.security.SecureRandom; |
||||
|
import java.sql.PreparedStatement; |
||||
|
|
||||
|
import org.flywaydb.core.api.migration.BaseJavaMigration; |
||||
|
import org.flywaydb.core.api.migration.Context; |
||||
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; |
||||
|
import org.springframework.security.crypto.password.PasswordEncoder; |
||||
|
|
||||
|
public class V3__add_default_admin extends BaseJavaMigration { |
||||
|
|
||||
|
private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |
||||
|
|
||||
|
private final SecureRandom random = new SecureRandom(); |
||||
|
|
||||
|
/** different dictionaries used */ |
||||
|
private final String ALPHA_CAPS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
||||
|
private final String ALPHA = "abcdefghijklmnopqrstuvwxyz"; |
||||
|
private final String NUMERIC = "0123456789"; |
||||
|
private final String SPECIAL_CHARS = "!@#$%^&*_=+-/"; |
||||
|
|
||||
|
/** |
||||
|
* Method will generate random string based on the parameters |
||||
|
* |
||||
|
* @param len the length of the random string |
||||
|
* @param dic the dictionary used to generate the password |
||||
|
* @return the random password |
||||
|
*/ |
||||
|
public String generatePassword(int len, String dic) { |
||||
|
String result = ""; |
||||
|
for (int i = 0; i < len; i++) { |
||||
|
int index = random.nextInt(dic.length()); |
||||
|
result += dic.charAt(index); |
||||
|
} |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void migrate(final Context context) throws Exception { |
||||
|
try (final PreparedStatement ps = context.getConnection() |
||||
|
.prepareStatement("insert into users (user_id, name, password) values (0,?,?)")) { |
||||
|
final String generatedPassword = generatePassword(60, ALPHA_CAPS + ALPHA + SPECIAL_CHARS); |
||||
|
final BufferedWriter bw = new BufferedWriter(new FileWriter("gen-password.txt")); |
||||
|
bw.write(generatedPassword); |
||||
|
bw.write("\nPlease delete this file"); |
||||
|
bw.close(); |
||||
|
ps.setString(1, "admin"); |
||||
|
ps.setString(2, passwordEncoder.encode(generatedPassword)); |
||||
|
ps.execute(); |
||||
|
} |
||||
|
|
||||
|
// try (final PreparedStatement ps = context.getConnection() |
||||
|
// .prepareStatement("insert into users_roles (user_id, role_id) values (1,0)")) { |
||||
|
// ps.execute(); |
||||
|
// } |
||||
|
} |
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue