package codeine.users; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.eclipse.jetty.http.HttpStatus; import codeine.jsons.auth.CodeineUser; import codeine.jsons.global.UserPermissionsJsonStore; import codeine.permissions.PermissionsConfJson; import codeine.servlet.AbstractApiServlet; import codeine.servlet.UsersManager; import com.google.common.base.Charsets; import com.google.common.hash.Hashing; import com.google.inject.Inject; public class RegisterServlet extends AbstractApiServlet { private static final Logger log = Logger.getLogger(RegisterServlet.class); private static final long serialVersionUID = 1L; @Inject private UsersManager usersManager; @Inject private UserPermissionsJsonStore permissionsConfigurationJsonStore; public static class RegisterJson{ private String username; private String password; } @Override protected void myPost(HttpServletRequest request, HttpServletResponse response) { RegisterJson r = readBodyJson(request,RegisterJson.class); if (usersManager.isUserExists(r.username)) { response.setStatus(HttpStatus.CONFLICT_409); return; } boolean firstUser = !usersManager.hasUsers(); String p = Hashing.md5().hashString(r.password, Charsets.UTF_8).toString(); String md5 = "MD5:" + p; CodeineUser user = usersManager.addUser(r.username, md5); if (firstUser) { log.info(r.username + " is the first user, making it admin"); makeAdmin(user); } getWriter(response).write("{}"); } private void makeAdmin(CodeineUser user) { PermissionsConfJson permissionsConfJson = permissionsConfigurationJsonStore.get(); permissionsConfJson.makeAdmin(user); permissionsConfigurationJsonStore.store(permissionsConfJson); } @Override protected boolean checkPermissions(HttpServletRequest request) { return true; } }