Limesurvey二次开发(接入CAS统一身份认证)随笔

Limesurvey是一个比较著名的开源问卷调查项目,GitHub地址:https://github.com/LimeSurvey/LimeSurveyphp

但因为种种缘由,虽然用搜索引擎可以依稀看见不少高校但愿使用它来建设本身学校的调查问卷系统,但在国内完成率比较低下。在我开发以前只看见上海交通大学完成了本身的二次开发,而且接入了本身学校的统一身份认证系统,除此以外,南京大学也打算作这个东西,然而过去了两年,好像仍是没有完成开发。html

猜想,国内比较滞后的缘由有如下的两年:git

一、调查问卷系统属于校园的非核心业务,可以利用第三方系统(问卷星等)解决问题,再利用iframe进行网页的嵌套,彻底没有本身花钱开发的太大必要。github

二、国内Limesurvey的参考资料特别少,甚至连如何去使用的文档都特别少,更不用谈是开发文档。 因为大可能是英文文档,国内使用比较迟钝。数据库

高校进行开发,主要是两个问题,一个是接入本身的全校身份统一认证系统(大学学校使用的是开源的CAS系统),其次就是改变他本身的非现代风格样式。数组

Limesurvey是用PHP+多种数据库进行开发的。使用的框架是某个版本的YII(估计还通过本身的改造),变量比较多,代码量也比较大。服务器

样式问题比较简单,通常状况下能够修改他比较原始的表格布局,替换成现代的DIV布局。或者直接修改CSS样式便可。但并不是全部能看到的东西都是经过模板渲染引擎来实现的,有很大的一部分是在本身控制的类里面echo直接输出的。app

比较重要的是接入CAS认证系统,基本上能够分为两个部分:框架

  1. 利用CAS系统进行后台的登陆,登陆后能够发布调查问卷布局

  2. 针对发布的调查问卷作必定权限控制。最为基础的就是把调查问卷分为两部分,一部分填写调查问卷须要进行CAS的认证,一部分对全部的人进行开放。

具体的实现能够参照上海交通大学的问卷吧系统。

利用CAS系统进行后台的登陆

limesurvey系统对用户的要求主要有ID, name, email, password. 这些东西除了password以外基本上CAS的attributes均可以以一个数组的形式进行提供,若是提供不了就能够和password同样处理,即符合他要求的格式便可(好比哈尔滨工业大学的没法提供email, 能够给每一个帐户的默认email是学号@hit.edu.cn)

咱们须要作的首先是在配置中打开 authcasautocreate_permission, 具体能够参见config-default.php中的配置内容。网址:https://github.com/LimeSurvey/LimeSurvey/blob/master/application/config/config-defaults.php#L187 ,通常状况下开启create便可实现自动建立用户的权限

而后就是建立用户的东西了:

大致上是在登陆以前进行检测是否登陆(参见官方提供的SDK),在没有登陆的状况下跳转到CAS服务器,而后跳转回来的时候便可获取到CAS服务器提供的一些基础信息。而后对新建立的用户进行一些设置。

实现起来不是特别的复杂。更为重要的事,有人已经关于这个问题进行过相关的开发,而且有一个插件,你只须要进行简单的修改就能够实现登陆登出这一块的问题了(在个人帮助下,如今已经兼容最新版的Limesurvey);

插件地址:https://github.com/univlorraine/limesurvey-cas

用CAS控制调查问卷的访问权限

Limesurvey在设计的时候就已经考虑过相似的问题,即不是针对全部的人都开放调查问卷。具体的内容是在后台的“发布与访问控制”中“使用验证码”来控制码。

这个原始的功能就是为了防止机器等暴力填写调查问卷,而出现了验证码这一操做,在设计上很符合接入CAS统一认证。

如此,咱们只须要替换相关的代码。即把以前的验证码相关的代码替换成CAS部分便可对问卷的访问权限进行有效的控制。

 

写在后面:

正如本文所说的同样,本文只是提供一下开发过程当中遇到的问题的大致解决思路,并不涉及如何去二次开发这个过程。

若是你恰巧也在进行这个开发,有什么问题欢迎在评论中指出。

原文地址:http://life.rccoder.net/php/1092.html

相关文章
相关标签/搜索