PHP

为 TestLink 增加从 LDAP 同步用户的功能
7月19日
管理员在配置 TestLink 时,经常会问我们一个问题:用户管理平台(使用LDAP)中创建的用户,并没有出现在 testlink 的用户数据库中,如何为用户指派权限?
之前我们的实现是这样的:
- 用户帐号已经在 LDAP 中存在了
- 用户访问 testlink,点击“登录”则跳转到“单点登录系统”
- 在“单点登录系统”认证成功后,浏览器重定向,跳转到 TestLink
- TestLink 发现用户已经登录,但是内置帐号不存在,会自动从 LDAP 中查询登录用户的信息,自动为该用户创建 TestLink 内置帐号,并设置缺省权限(缺省是游客,管理员可配置)。
所以,我们之前会告诉客户:“先让用户登录一次 TestLink,再为他分配权限。” 就是因为这个原因。 :-P
最近 TestLink 上游发布新版本,在迁移我们的特性分支之时,重新考虑了这个问题,决定动手实现“LDAP用户同步功能”。
增加这个功能后,管理员就可以更加方便的为 TestLink 用户授权,而不用再要求用户在授权前先前登录系统。
实际上这个功能在我们支持的其它系统中也有类似实现。例如 Redmine 我们也实现了类似功能。比较一下 Redmine 和 Testlink 中增加同样功能的代码行,是一个很有意思的事情。
- TestLink 实现 “LDAP用户同步” 功能: 增加了 365 行
$ tg patch t/ldap_account_sync | grep "^+" | wc -l 365
- Redmine 实现同样功能,只用了不到一半的代码量:141 行
$ tg patch t/synchronization_account_from_ldap | grep "^+" | wc -l 141
Redmine 是用 ROR 框架开发的,而 TestLink 使用的是 PHP。PHP 也许在学习曲线上看比较容易上手,但是长远来看,代码的维护量和开发难度还是要大很多。
面向 PHP 5.3 友好的 PHP 开发
3月14日
最近 Debian 的 testing 版本已经将 PHP 由 5.2.x 升级 为 5.3.1。PHP 5.3 开始,为了更好的向 PHP 的未来版本(PHP6) 过渡,将未来不再支持的函数标记为 DEPRECATED。在代码中使用这些函数,将毫不留情的在页面中显示警告信息:“使用了过时的函数…”,诸如此类。
那么如何面向未来,让现有的 PHP 程序平滑的向下一代 PHP 引擎过渡呢?



最新评论