/** * Este arquivo é parte do Biblivre3. * * Biblivre3 é um software livre; você pode redistribuí-lo e/ou * modificá-lo dentro dos termos da Licença Pública Geral GNU como * publicada pela Fundação do Software Livre (FSF); na versão 3 da * Licença, ou (caso queira) qualquer versão posterior. * * Este programa é distribuído na esperança de que possa ser útil, * mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de * MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a * Licença Pública Geral GNU para maiores detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto * com este programa, Se não, veja em <http://www.gnu.org/licenses/>. * * @author Alberto Wagner <alberto@biblivre.org.br> * @author Danniel Willian <danniel@biblivre.org.br> * */ package biblivre3.administration.permission; import biblivre3.circulation.CirculationBO; import biblivre3.circulation.UserDTO; import biblivre3.utils.TextUtils; import java.util.List; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mercury.ErrorDTO; import mercury.IFJson; import mercury.BaseHandler; import mercury.RootJsonHandler; import mercury.SuccessDTO; import org.json.JSONObject; public class JsonPermissionHandler extends RootJsonHandler { @Override public JSONObject process(HttpServletRequest request, HttpServletResponse response) { String submitButton = request.getParameter("submitButton"); Properties properties = BaseHandler.getI18nProperties(request, "biblivre3"); IFJson dto = null; if (submitButton == null || submitButton.isEmpty()) { } else if (submitButton.equals("open")) { dto = open(request); } else if (submitButton.equals("save")) { dto = save(request); } else if (submitButton.equals("remove")) { dto = remove(request); } return dto.toJSONObject(properties); } private IFJson open(HttpServletRequest request) { int userid; try { userid = Integer.parseInt(request.getParameter("userid")); } catch (Exception e) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } CirculationBO cbo = new CirculationBO(); UserDTO userDTO = cbo.searchByUserId(userid); if (userDTO == null) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } int loginid = userDTO.getLoginid(); PermissionDTO dto = new PermissionDTO(); dto.setUser(userDTO); if (loginid > 0) { final PermissionBO bo = new PermissionBO(); final List<String> list = bo.getByLoginId(loginid); if (list != null) { dto.setPermissions(list); } } return dto; } private IFJson save(final HttpServletRequest request) { int userid; try { userid = Integer.parseInt(request.getParameter("userid")); } catch (Exception e) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } CirculationBO cbo = new CirculationBO(); UserDTO userDTO = cbo.searchByUserId(userid); if (userDTO == null) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } String login = TextUtils.sanitize(request.getParameter("login"), ""); String password = TextUtils.sanitize(request.getParameter("password"), ""); String password2 = TextUtils.sanitize(request.getParameter("password_2"), ""); String currentLogin = userDTO.getLoginName(); boolean newLogin = (currentLogin == null || currentLogin.isEmpty()); PermissionBO pbo = new PermissionBO(); if (newLogin && pbo.findLoginName(login)) { return new ErrorDTO("ERROR_LOGIN_ALREADY_EXISTS", "warning"); } if (newLogin && login.isEmpty()) { return new ErrorDTO("ERROR_EMPTY_LOGIN", "warning"); } if (newLogin && password.isEmpty()) { return new ErrorDTO("ERROR_PASSWORDS_DONT_MATCH", "warning"); } if (!newLogin && !login.isEmpty()) { return new ErrorDTO("ERROR_USER_ALREADY_HAVE_LOGIN_NAME", "warning"); } if (!newLogin && !password.isEmpty() && !password.equals(password2)) { return new ErrorDTO("ERROR_PASSWORDS_DONT_MATCH", "warning"); } if (newLogin) { pbo.createLogin(userDTO, login, TextUtils.encodePassword(password)); } else if (!password.isEmpty()) { pbo.updatePassword(userDTO, userDTO.getLoginName(), TextUtils.encodePassword(password)); } String[] permissions = request.getParameterValues("permissions"); boolean result = pbo.save(userDTO.getLoginid(), permissions); if (result) { if (newLogin) { return new SuccessDTO("SUCCESS_CREATE_LOGIN"); } else if (!password.isEmpty()) { return new SuccessDTO("SUCCESS_PASSWORD_CHANGED"); } else { return new SuccessDTO("SUCCESS_PERMISSIONS_CHANGED"); } } else { return new ErrorDTO("ERROR_CREATE_RECORD", "warning"); } } private IFJson remove(final HttpServletRequest request) { int userid; try { userid = Integer.parseInt(request.getParameter("userid")); } catch (Exception e) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } CirculationBO cbo = new CirculationBO(); UserDTO userDTO = cbo.searchByUserId(userid); if (userDTO == null) { return new ErrorDTO("ERROR_INVALID_USER", "warning"); } (new PermissionBO()).removeLogin(userDTO); return new SuccessDTO("SUCCESS_REMOVE_LOGIN"); } }