package com.aperture_software.glados_wiki.shiro; import com.aperture_software.glados_wiki.entities.Group; import com.aperture_software.glados_wiki.entities.User; import com.aperture_software.glados_wiki.services.GroupService; import com.aperture_software.glados_wiki.services.UserService; import com.google.common.base.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Created by jhyun on 13. 12. 28. */ @Component public class AdminsAutoCreate implements Runnable { private static Logger LOG = LoggerFactory.getLogger(AdminsAutoCreate.class); @Autowired private GroupService groupService; @Autowired private UserService userService; @Override public void run() { // check "everyone" group. Optional<Group> gEveryone = groupService.getByName(GroupService.EVERYONE_ROLE); if (!gEveryone.isPresent()) { LOG.warn("NO 'everyone' GROUP, CREATE..."); gEveryone = Optional.of(groupService.create(GroupService.EVERYONE_ROLE, "everyone.")); } // check "admins" group. Optional<Group> g = groupService.getByName(GroupService.ADMIN_ROLE); if (!g.isPresent()) { LOG.warn("NO 'admins' GROUP, CREATE..."); g = Optional.of(groupService.create(GroupService.ADMIN_ROLE, "administrators.")); } // check "admin" user. Optional<User> u = userService.getByUsername("admin"); if (false == u.isPresent()) { final String EMAIL = "admin@somewhere.over.the.rainbow"; final String PASS = "admin1234"; LOG.warn(String.format("NO 'admin' USER, CREATE... PASSWORD = [%s]", PASS)); u = userService.create("admin", EMAIL); userService.setPassword(u.get(), PASS); u.get().getGroups().add(g.get()); userService.update(u.get()); } } }