/** сохранить инвайт в БД */ private void saveInvite(String login) throws Exception { Model invite = getModel("invite"); invite.set("user_id", getAuthorizedUserId()); invite.set("login", login); setStandartFields(invite, true); boolean ok = invite.save(); if (!ok) { setStatus(false); addError(invite.getError()); } }
// регистрация пользователя 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; }
/** сбросить пароль на случайное значение */ public void resetPassword() { try { if (MyString.NotNull(getReq("user_id"))) { Model users = getModel(); users.set("user_id", getReq("user_id")); set("user_profile_id", getReq("user_profile_id")); if (users.findByPrimary()) { String password = "******"; users.set("password", Security.getPasswordHash(password)); users.save(); set("password", password); model(users); } else { addError(users.getError()); } } else { addError("не определен пользователь"); } } catch (Exception e) { registerException(e); } }
/** * изменить роль * * @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); } }