2012-08-17 49 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比试图对其进行修改以满足您的需求,更好的长期解决方案。

相关问题