package ch.rasc.eds.starter.config; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import org.springframework.transaction.support.TransactionTemplate; import com.querydsl.core.types.dsl.Expressions; import ch.rasc.eds.starter.entity.Authority; import ch.rasc.eds.starter.entity.QUser; import ch.rasc.eds.starter.entity.User; import ch.rasc.eds.starter.util.JPAQueryFactory; @Component class Startup { private final JPAQueryFactory jpaQueryFactory; private final PasswordEncoder passwordEncoder; public Startup(JPAQueryFactory jpaQueryFactory, PasswordEncoder passwordEncoder, TransactionTemplate transactionTemplate) { this.jpaQueryFactory = jpaQueryFactory; this.passwordEncoder = passwordEncoder; transactionTemplate.execute(ts -> { init(); return null; }); } private void init() { if (this.jpaQueryFactory.select(Expressions.ONE).from(QUser.user) .fetchFirst() == null) { // admin user User adminUser = new User(); adminUser.setLoginName("admin"); adminUser.setEmail("[email protected]"); adminUser.setFirstName("admin"); adminUser.setLastName("admin"); adminUser.setLocale("en"); adminUser.setPasswordHash(this.passwordEncoder.encode("admin")); adminUser.setEnabled(true); adminUser.setDeleted(false); adminUser.setAuthorities(Authority.ADMIN.name()); this.jpaQueryFactory.getEntityManager().persist(adminUser); // normal user User normalUser = new User(); normalUser.setLoginName("user"); normalUser.setEmail("[email protected]"); normalUser.setFirstName("user"); normalUser.setLastName("user"); normalUser.setLocale("de"); normalUser.setPasswordHash(this.passwordEncoder.encode("user")); normalUser.setEnabled(true); adminUser.setDeleted(false); normalUser.setAuthorities(Authority.USER.name()); this.jpaQueryFactory.getEntityManager().persist(normalUser); } } }