来源:http://trac.seagullproject.org/wiki/Modules/User/IntegratingWithOtherProjects

概述

这边假设你把你的用户数据放在表foo_user中。

  • 复制表和内容到seagull数据库
  • 在全局配置文件中找到
    $conf['table']['user'] = 'usr';
  • 改成
    $conf['table']['user'] = 'foo_user';
        o 或者以Admin登陆,进入 General -> Configuration -> DB 使用表单修改.
        o 警告:你必须完成下列的步骤,要不然你的项目会出错。 
  * 编辑Seagull的usr映射 (参考modules/user/data/tableAliases.ini并修改键 "user" 的值为 "foo_user")
        o tableAliases.ini保存表映射信息,这些信息在你重建seagull环境时会用到。 
  * 将 "foo_user"的主键修改为usr_id
        o 尽管seagull允许你创建任意的表映射,但是这个功能并没有扩展到字段,在user模块中很多地方写死了使用"usr_id"字段
  * 添加"role_id"字段
  * 修改现有username, password and account_active的字段为 "username" 和 "passwd" 和 "is_acct_active"
        o 如果这个表缺少上面的任何字段,必须创建这些字段。

提炼

通常情况下你会将所有的用户转换成SGL_MEMER,即角色IP为2的用户,并且至少创建一个ID为1的SGL_ADMIN管理员账户。

  • 将导入的表的数据的所有记录的role_id字段设置为2。
  • 将admin用户的role_id 设置为 1
  • 最好所密码使用MD5加密,不然至少管理要使用md5加密密码。
    $ php -a
    > <?php
    > echo md5('my new password');
  • 如果你想将所有用户都启用账户,将整个表的is_acct_active字段值设置为1
  • 进入user模块,这样你就可以让seagull使用外部用户表来工作。
    http://example.com/index.php/user/

修改权限

默认情况下,为每个新建用户分配了一组权限,尽管他们是属于同一个角色。这就是说如果角色Foo是和一个23个权限集的ID关联,那么在user_permission有中每个用户的ID都会和这个ID相关联。这样做的好处是每个用户的权限可以再修改,但是代价是产生了大量的记录。如果你有超过1万的用户,为每个用户分配独立的权限并不是一个好的方案。

你可以不使用独立权限方案而让所有的同一个角色的用户从权限表获取权限集,修改配置:

  • Under General → Configuration → Session → Permission Retrieval Method, 选择”getPermsByUser”
  • 这对应于UserDAO#getPermsByUser()

保存,现在权限就更简单易于管理了。

 
modules/user/integratingwithotherprojects.txt · 最后更改: 2010/05/30 00:21 (外部编辑)
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2