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());
}
}
}