2012-08-17 88 views
0

好的,這裏是情況。CFML:在第三方論壇插件上匹配的經過身份驗證的用戶,因此他已「登錄」

我的任務是將Coldfusion論壇(Galleon)整合到現有的用於商家的CRM中。

問題是,原來的CRM本身在數據庫中有自己的登錄名和'user'表。 Galleon使用自己的登錄頁面和「用戶」文件。

我和我的搭檔絞盡腦汁地試圖弄清楚這個(確實很簡單)的問題。我們想到了定義一個全局變量的可能性,就像會話一樣,一旦被CRM的主要登錄觸發,它就會繞過Galleon登錄。

但是,這並不能解決告訴帆船用戶是誰,所以他可以張貼的問題..

我在考慮解決這個問題的方法之一是將原始CRM的全部用戶文件放入Galleon用戶文件。這樣它有一個相同的用戶\通行證列表。

任何想法傢伙?

擊穿:

用戶登錄在CRM醒目網頁----->帶給CRM index.cfm \主面板。用戶可以點擊「CRM FORUM!」而不是被重新提示給用戶\通過Galleon知道他是誰,並允許他做線程和發佈。

回答

0

確實有很多方法可以在這個皮膚上的貓。我下載的大帆船2論壇,代碼採取偷看在user.cfc

你可以修改查詢在此功能把它從你的CMS需要的字段:

<cffunction name="getUser" access="public" returnType="struct" output="false" hint="Returns a user."> 

<cfquery name="qGetUser" datasource="#variables.dsn#">  
SELECT 
    [cmsusertable].cmsid as ID, 
    [cmsusertable].cmsuser as username, 
    [cmsusertable].cmspassword as password, 
    [cmsusertable].cmsemail as emailaddress, 
    [cmsusertable].createDate as datecreated, 
    [cmsusertable].cmsactive as confirmed, 
    [cmsusertable].cmssignature as signature, 
    [cmsusertable].cmsavatar as avatar 
FROM 
    [cmsusertable]users 
WHERE 
    [cmsusertable].username = <cfqueryparam value="#arguments.username#" cfsqltype="CF_SQL_VARCHAR" maxlength="50"> 
</cfquery> 

請記住,你必須返回從Galleon的查詢字段中預計它們,所以使用'as'語句將CMS數據庫字段重命名爲Galleon所期望的。現在,您的CMS表格中可能沒有這些無關字段,例如Signature/Avatar。如果您可以擴展您的CMS表和用戶例程以適應這些字段,那可能會很好。或者您可以修改Galleon中的配置文件例程,以僅更新Signature/Avatar而不是整個配置文件。如果您確實使用Galleon表來存儲這些信息,請記得添加一個連接以包含這些字段,以便請求統一用戶數據。

您還需要修改項目中約4個文件(user.cfc,conference.cfc,message.cfc,thread.cfc)中的連接,以便與您的CMS用戶表連接。

最後,您必須修改login.cfm以簡單地嘗試使用CMS用戶會話中的信息設置session.user結構,否則將用戶重定向回CMS登錄頁面。

總的來說,我不認爲這將是太困難了。我確信有些東西我錯過了,但也許會讓你走。

0

你所描述的究竟是多少個網站的工作,無論你使用什麼機制進行身份驗證(即; OAuth,Twitter等)。你使用外部服務進行身份驗證,那個說「這個人真的被認證了」的外部服務。這取決於你的代碼 - 在這種情況下是帆船 - 說「這個人是認證的,但他們沒有在我們的系統中的帳戶,讓我們做一個。」這通常需要您返回外部服務以獲取姓名,電子郵件地址等。

您很可能必須在外部服務中做一些額外的工作才能更新Galleon中的客戶信息。例如,如果某人更改了他們的電子郵件地址,那麼Galleon中的電子郵件地址應該也會更新。這可能變得複雜,但從客戶的角度來看是必要的。

0

這樣做會同步你的帆船論壇用戶表與你的CRM,然後讓他們在爲你添加同步的最好方法/刪除/更新CRM用戶。

的關鍵,這樣做是利用大帆船業務層API--又名在帆船氟氯化碳的公共方法。這將使您無需修改​​任何Galleon的代碼,如果您想輕鬆安裝Galleon更新,我強烈推薦這些代碼。 (順便說一下,您應該保持第三方代碼庫是最新的,因爲開源項目是黑客的熱門目標 - 尤其是論壇。)

要同步現有用戶,您需要編寫腳本通過您當前的CRM用戶迭代,併爲每個用戶調用Galleon的User.addUser()方法,使用與您的CRM相同的用戶/通道組合(或可能使用它們的哈希值)。一定要打破任何Galleon錯誤/失敗,以免錯過任何用戶。

爲了保持大帆船同步你的CRM,根據需要添加到帆船的氟氯化碳的電話。例如,從CRM中刪除用戶時調用User.deleteUser()。

對於身份驗證,您將使用User.authenticate(),傳遞相同的用戶名/密碼組合爲你的CRM。

利用第三方庫的業務層API比試圖對其進行修改以滿足您的需求,更好的長期解決方案。

相關問題