// регистрация пользователя public boolean registrationWithPassword() throws Exception { boolean status = false; // проверить наличие такого логина ArrayList<String> errors = new ArrayList<String>(); if (MyString.NotNull(getReq("login"))) { if (MyString.NotNull(getReq("password")) && MyString.NotNull(getReq("password2"))) { if (getReq("password").equals(getReq("password2"))) { String password = getReq("password").toString(); String login = (String) getReq("login"); Table users = getTable("users"); Select se = getSelect(); se.select(users); se.from(users); se.and(users.get("login").eq(login)); se.and(users.get("active_to").isNull()); se.executeSelect(getConnection()); if (se.getDinamicList().size() > 0) { errors.add("Пользователь с таким адресом электронной почты уже существует"); } else { String hash = Security.getPasswordHash(password); Model userModel = getModel(getModelName()); userModel.set("password", hash); userModel.set("login", login); userModel.set("active_from", FormatDate.getCurrentDateInMysql()); status = userModel.save(); if (status) { set("user_id", userModel.get("user_id")); } else { errors.addAll(userModel.getError()); } } } else { addError("Ошибка: пароль не совпадает с подтверждением"); } } else { setStatus(false); addError("не передан пароль"); } } else { setStatus(false); addError("не передан адрес электронной почты"); } addError(errors); setStatus(status); return status; }
/** обновить данные модели */ @Override public void closeModel() { try { Model model = getModel(getModelName()); boolean status = false; model.set(getRequestClone()); if (model.findByPrimary() == false) { status = false; addError("Не обнаружен первичный ключ " + model.getPrimaryAlias()); } else { model.set("active_to", FormatDate.getCurrentDateInMysql()); status = model.save(); getActionResult().model(model); for (String name : model.getParams().keySet()) { set(name, model.getParams().get(name)); } } } catch (Exception ex) { addError(MyString.getStackExeption(ex)); } }
/** * изменить роль * * @return * @throws Exception */ public boolean changeRole() throws Exception { boolean status = false; if (getReq("user_id") != null) { String query = "delete from user_roles where user_id = " + getSelect().validateParameter(getReq("user_id"), true) + ""; QueryExecutor exec = ExecutorFabric.getExecutor(getConnection(), query); status = exec.update(); if (!getReq("role_id").equals("0")) { Model role = getModel("user_roles"); role.set("user_id", getReq("user_id")); role.set("role_id", getReq("role_id")); role.set("active_from", FormatDate.getCurrentDateInMysql()); status = role.save(); addError(role.getError()); } else { status = false; addError("Роль не передана"); } } setStatus(status); return status; }
/** * сохранить связь между пользователями по инвайту. Применяется, когда регистрируется новый * пользователь, и этот пользователь был приглашен другим пользователем. Тогда мы регистрируем * связи между этими двумя пользователями - приглашенным и тем, кто пригласил. */ public void saveFromInvite() { try { if (MyString.NotNull(getReq("user_id")) && MyString.NotNull(getReq("login"))) { // получить ИД добавленного пользователя // получить логин Object login = getReq("login"); Object guestId = getReq("user_id"); // найти в таблице все записи с таким логином Table inviteTable = getTable("invite"); Select sel = getSelect(); sel.select(inviteTable); sel.from(inviteTable); sel.and(inviteTable.get("delete_date").isNull()); sel.and(inviteTable.get("login").eq(login)); boolean ok = sel.executeSelect(getConnection()); if (!ok) { setStatus(false); addError(sel.getError()); } // для каждой записи for (DinamicModel model : sel.getDinamicList()) { Object hostId = model.get("user_id"); if (hostId != null) { // сохранить две связи Model link1 = getModel(); link1.set("user_id", hostId); link1.set("partner_id", guestId); setStandartFields(link1, true); ok = link1.save(); if (!ok) { setStatus(false); addError("3"); addError(link1.getError()); } // сохранить две связи Model link2 = getModel(); link2.set("user_id", guestId); link2.set("partner_id", hostId); setStandartFields(link2, true); ok = link2.save(); if (!ok) { setStatus(false); addError("2"); addError(link2.getError()); } // закрыть саму запись Model invite = getModel("invite"); invite.set("invite_id", model.get("invite_id")); setStandartFields(invite, false); invite.set("delete_date", FormatDate.getCurrentDateInMysql()); ok = invite.save(); if (!ok) { setStatus(false); addError("1"); addError(invite.getError()); } } } } else { setStatus(false); addError("не переданы ИД пользователя или логин"); } } catch (Exception e) { registerException(e); } }