2017-01-06 58 views
0

對於我們正在使用liferay的項目以及用戶處理我們正在使用ldap的項目。刪除liferay上的用戶

從ldap中刪除的用戶沒有更新liferay的數據庫,因此如果刪除後添加的用戶將導致問題。

我試圖找出原因,似乎必須從許多表中刪除用戶。手動我們可以像下面提到的那樣刪除它。

DELETE FROM Users_UserGroups WHERE userId = 'userid'; 
DELETE FROM Users_Roles WHERE userId = 'userid'; 
DELETE FROM Users_Orgs WHERE userId = 'userid'; 
DELETE FROM Contact_ WHERE userId = 'userid'; 
DELETE FROM Group_ WHERE classPK = 'userid'; 
DELETE FROM User_ WHERE userId = 'userid'; 

但是在編程上我們該怎麼做。

我試着使用:

UserLocalServiceUtil.deleteUser(UserLocalServiceUtil 
         .getUserByEmailAddress(companyid, email)); 

但它不能正常工作。還有什麼其他方法可以做到這一點?

+0

在使用Service類來刪除用戶時,您會面臨哪些錯誤?在數據庫中留下的任何特定引用? –

+1

在liferay中,用戶刪除是兩個步驟,第一步是關閉用戶,然後刪除它。 – Gautam

+0

http://stackoverflow.com/questions/19022517/users-are-not-getting-deleted-from-liferay-db – Issamovitch

回答

1

獲取用戶的電子郵件,你想要從User_表中刪除。並將其插入到ArrayList中。

在我的情況下,我已經把這段代碼放在一個示例程序中,並運行這段代碼一次。

`

List<User> users = UserLocalServiceUtil.getUsers(QueryUtil.ALL_POS, QueryUtil.ALL_POS); 
ArrayList<String> places = new ArrayList<String>(Arrays.asList("[email protected]","[email protected]")); 
for (User user : users) { 
    if (places.contains(user.getEmailAddress())) { 
     System.out.println("user "+user.getEmailAddress()+" deleted"); 
     UserLocalServiceUtil.deleteUser(user); 
    } 
} 

`

希望這有助於!

+1

@Navankur這就是所有遊戲的邏輯,使用此.. 'List users = UserLocalServiceUtil.getUsers(QueryUtil.ALL_POS,QueryUtil.ALL_POS); ArrayList places = new ArrayList <(Arrays.asList(「[email protected]」,「[email protected]」); for(User user :users(用戶){if(!places.contains(user.getEmailAddress())){ System.out.println(「user」+ user.get EmailAddress()+「deleted」); UserLocalServiceUtil.deleteUser(user); } }' –

+0

它有語法錯誤 –

2

儘管我的評論「請定義它不正常工作」,我想給出一個答案,顯示了一個替代方案。這將解決潛在的問題,而不是給你解決問題的話。如果您需要實際答案來解答您的問題,請描述您正在觀察的內容。

刪除用戶是一項危險的操作:您可能會留下懸空的引用,例如,如果該用戶參與了Portlet中的某些活動。他們可能是博客文章,內容文章或留言板消息的作者。這不是一個詳盡的清單。

爲此它總是最好還是停用用戶 - 這樣他們的姓名,肖像的圖像和其他數據始終可用,甚至不久後他們可以登錄

+0

我面臨的問題更多地與用相同的電子郵件地址再次創建用戶有關。當我重新創建它們時,它們被導入到liferay datbase中,並且不會得到身份驗證...也不會顯示任何異常日誌等等,所以我無法找到原因... –

+0

如果您已經手動刪除數據庫中的行所有投注都關閉。你永遠不應該那樣做,因爲這個api例程不能識別他們發現的數據 –

+0

是的,我嘗試從提到的表中手動刪除用戶。那麼現在有什麼選擇。 –