@Transactional
public void onApplicationEvent(ContextRefreshedEvent event) {
log.info("Creating initial database data");
// Create root user and group
User rootUser = createRootUser();
Group rootGroup = createRootGroup();
rootGroup.getUsers().add(rootUser);
// Create anonymous user and group
User anonymousUser = createAnonymousUser();
// Login as root user
login("root");
// Create dev user and group
User developerUser = createDeveloperUser();
Group developerGroup = createDeveloperGroup();
developerGroup.getUsers().add(developerUser);
// Create admin user and group
User adminUser = createAdminUser();
Group adminGroup = createAdminGroup();
adminGroup.getUsers().add(adminUser);
// Create normal user and group
User user = createUser();
Group userGroup = createUserGroup();
userGroup.getUsers().add(user);
// Logout root user
logout();
log.info("Initial database data created!");