среда, 12 декабря 2012 г.

Как удалить всех пользователей в Liferay

Например в определенном Portal Instance.  Можно конечно штатно - через UI -  но если их много - то это займет много времени. К тому же удаление идет не напрямую - а сначала надо отключить, а только потом удалить.

Есть более просто решение -  Script панель в Control Panel -> Server Administration
Там можно вызвать относительно любой код используя различные сервисы  Liferay.

В частности - если надо удалить пользователей для какого-то определенного Portal Instance (companyId) можно использовать следующий  Script:

// get users

users = Packages.com.liferay.portal.service.UserLocalServiceUtil.getUsers(-1,-1);
companyId = xxxxx; // put companyid here
out.println(users.size());
count=0;

// enumerate all users 
for (var i = 0; i < users.size(); i++) {
    user = users.get(i);

  if (user.getCompanyId() == companyId) {
    // we cannot remove "default" user
    if (!user.isDefaultUser()) {
    Packages.com.liferay.portal.service.UserLocalServiceUtil.deleteUser(user);
    count++; // count removed users
    }
  }
}

out.println(count);

1 комментарий:

Unknown комментирует...

То что можно всех удалить так просто и быстро - это замечательно, но можно ли так же получить всю информацию обо всех пользователях портала в один файл? Например, как было в экспорте зарегистрированных пользователей + статус (активный / не активный), + все роли (включая роли сайтов)?