/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.service; /* * #%L * JSF Support Beans * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.util.Collection; import javax.annotation.PostConstruct; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.enterprise.event.Observes; import javax.inject.Inject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.picketlink.event.PartitionManagerCreateEvent; import org.picketlink.idm.IdentityManager; import org.picketlink.idm.PartitionManager; import com.intuit.tank.dao.GroupDao; import com.intuit.tank.dao.UserDao; import com.intuit.tank.project.Group; import com.intuit.tank.project.User; import com.intuit.tank.vm.common.PasswordEncoder; import com.intuit.tank.vm.settings.DefaultUser; import com.intuit.tank.vm.settings.TankConfig; /** * InitializeEnvironment * * @author dangleton * */ @Singleton @Startup public class InitializeEnvironment { private static final Logger LOG = LogManager.getLogger(InitializeEnvironment.class); private TankConfig tankConfig; @Inject private PartitionManager partitionManager; private IdentityManager identityManager; boolean initialize = false; @PostConstruct public void init() { identityManager = this.partitionManager.createIdentityManager(); tankConfig = new TankConfig(); createDefaultGroups(); createDefaultUsers(); initialize = true; } /** * @param sb * @return */ private void createDefaultUsers() { UserDao dao = new UserDao(); GroupDao groupDao = new GroupDao(); for (DefaultUser newUser : tankConfig.getSecurityConfig().getDefaultUsers()) { if (dao.findByUserName(newUser.getName()) == null) { try { User user = new User(); user.setName(newUser.getName()); user.setEmail(newUser.getEmail()); user.setPassword(PasswordEncoder.encodePassword(newUser.getPassword())); user = dao.saveOrUpdate(user); for (String g : newUser.getGroups()) { Group group = groupDao.getOrCreateGroup(g); user.addGroup(group); } for (String defaultGroup : tankConfig.getSecurityConfig().getDefaultGroups()) { user.addGroup(groupDao.getOrCreateGroup(defaultGroup)); } dao.saveOrUpdate(user); LOG.info("Created user " + user.getName()); } catch (Exception e) { LOG.info("Error creating user: " + e, e); } } } } /** * @param sb * @return */ private void createDefaultGroups() { GroupDao groupDao = new GroupDao(); for (String g : tankConfig.getSecurityConfig().getGroups()) { try { Group group = groupDao.findByName(g); if (group == null) { groupDao.saveOrUpdate(new Group(g)); LOG.info("Created Group " + g); } else { identityManager.add(new org.picketlink.idm.model.basic.Role(g)); // identityManager.add(new org.picketlink.idm.model.basic.Group(g)); LOG.info("Initialized Role " + g); } } catch (Exception e) { LOG.error("Error creating default Group: " + e, e); } } } }