Программно удалить пользователя в Orchard - PullRequest
0 голосов
/ 05 мая 2018

Я не гуру сада. Я - парень с настольными приложениями, у которого много обязанностей, он унаследовал большой кусок кода Orchard и получил несколько инструментов обслуживания. Я пытался гуглить интернет, но безрезультатно поворачиваюсь к стеку в отчаянной попытке получить кнопку easy ...

В основном (и это слишком упрощенный вариант использования) - у нас часто есть пользователи, которые регистрируются с ошибочно набранным адресом электронной почты или , забывают данные своей учетной записи в течение дня или при повторной регистрации но толстым пальцем пароль , а затем регистрация в третий раз и т.д ...

У меня есть консоль обслуживания, которая позволяет администратору «находить» данные (в наших собственных таблицах sql, не связанных с садом), связанные с первой или второй учетными записями (в моем примере), и повторно связывать эти данные с третьим «текущим» / правильный "аккаунт.

В завершение этого переопределения я хотел бы программно очистить (читай: удалить) логины Orchard для первых двух учетных записей, которые теперь официально являются kruft.

Я нашел некоторую информацию о стеке здесь , в которой говорится об учетных записях пользователей Orchard:

Пользователи являются типами контента, и Orchard создает элементы контента для каждого пользователь. При создании нового пользователя Orchard добавляет записи в xxx_Orchard_Users_UserPartRecord, xxx_Orchard_Framework_ContentItemRecord, xxx_Orchard_Framework_ContentItemVersionRecord и xxx_Orchard_Roles_UserRolesPartRecord, если вы связали какие-либо роли с пользователь.

Таблица xxx_Orchard_Framework_ContentItemVersionRecord отслеживает номера версии и опубликован ли элемент контента или нет, и какая версия опубликованного элемента контента является самой последней.

При удалении пользователя Orchard не удаляет записи из таблицы, но просто создает новую версию записи и устанавливает Опубликовано и Последние столбцы до 0 для новой версии и старой версии. Так как там нет опубликованной и последней версии элемент контента не показать в списке пользователей.

Я понимаю это концептуально , но я не могу поверить, чтобы удалить пользователя, который был бы обязан удалить записи из каждой из этих «частных» таблиц в саду. Вместо этого я ожидаю, что есть класс / метод / метод для удаления Типа контента, Части или Записи или чего-либо еще (у меня до сих пор не получилось назвать объект Orchard прямо в моей голове).

Может кто-нибудь поделиться примером удаления пользователя в коде (по идентификатору или имени пользователя или электронной почте)? Или укажите мне на соответствующую документацию? Я шариваю как рыба из воды ...

Как всегда, заранее спасибо!

1 Ответ

0 голосов
/ 05 мая 2018

Итак, как вы говорите, в Orchard большинство удалений из пользовательского интерфейса - это мягкие удаления, сохраняющие все данные и устанавливающие флаг в базе данных, чтобы сказать, что этот парень удален. Для этого программно, где _contentManager является экземпляром IContentManager.

var userItem = _contentManager.Get<IUser>(userId);
_contentManager.Remove(userItem);

Для полного удаления, которое удалит запись элемента, все записи версии элемента и все записи части содержимого (titlepart, userpart и т. Д.)

var userItem = _contentManager.Get<IUser>(userId);
_contentManager.Destroy(userItem);

Это было добавлено в сад в версии 1.9.

...