59 lines
2.1 KiB
Java
59 lines
2.1 KiB
Java
/*
|
|
* Copyright (c) 2019 ETH Zürich, Educational Development and Technology (LET)
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
package ch.ethz.seb.sebserver.webservice;
|
|
|
|
import org.cryptonode.jncryptor.AES256JNCryptor;
|
|
import org.cryptonode.jncryptor.JNCryptor;
|
|
import org.flywaydb.core.Flyway;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.context.annotation.Profile;
|
|
|
|
import ch.ethz.seb.sebserver.gbl.Constants;
|
|
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
|
|
|
|
@Configuration
|
|
@WebServiceProfile
|
|
public class WebserviceConfig {
|
|
|
|
@Value("${sebserver.webservice.clean-db-on-startup:false}")
|
|
boolean cleanDBOnStartup;
|
|
|
|
@Lazy
|
|
@Bean
|
|
public JNCryptor jnCryptor() {
|
|
final AES256JNCryptor aes256jnCryptor = new AES256JNCryptor();
|
|
aes256jnCryptor.setPBKDFIterations(Constants.JN_CRYPTOR_ITERATIONS);
|
|
return aes256jnCryptor;
|
|
}
|
|
|
|
/** For test, development and demo profile, we want to always clean up and
|
|
* Start the migration from scratch to work with the same data.
|
|
*
|
|
* @return FlywayMigrationStrategy for "dev-ws", "test", "demo" profiles */
|
|
@Bean
|
|
@Profile(value = { "dev-ws", "test", "demo" })
|
|
public FlywayMigrationStrategy cleanMigrateStrategy() {
|
|
final FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
|
|
@Override
|
|
public void migrate(final Flyway flyway) {
|
|
if (WebserviceConfig.this.cleanDBOnStartup) {
|
|
flyway.clean();
|
|
}
|
|
flyway.migrate();
|
|
}
|
|
};
|
|
|
|
return strategy;
|
|
}
|
|
|
|
}
|