Skip to content

v0.11.5

mao edited this page Jan 29, 2016 · 17 revisions

版本 更新时间 备注
v0.1.0 2015/10/09 初稿
v0.1.1 2015/10/10 完善团队管理部分, 新增私有项目设置,增加团队列表。
v0.1.2 2015/10/13 增加用户体验升级规划

背景

现外网部署的RAP Server越来越多,安全及权限控制非常重要。在之前,我们主要考虑内网部署RAP服务器的情况,所以在权限管理上做的非常弱,本次升级将增强权限管理、提升安全性。增加团队成员及权限管理,增强数据访问控制等等,使RAP具备部署到外网使用的安全条件。同时,该版本也会修复BUGs,完善用户体验。

需求设计

  • 权限管理
    • 增加团队管理,可设置团队成员及权限
    • 改写文档必须是项目成员或创建者,其他团队成员可以查看该团队下的所有项目,但不可修改。
    • 项目可被设置为私密项目,设置为私密项目时,仅允许项目成员查看/修改。其他同团队成员仍然不能查看。推迟至0.11.6,需根据用户反馈再定
  • 可见性
    • 现在用户只能看到自己加入的团队,及该团队下的业务线、分组、项目(私密项目除外)
    • 页面控制台访问需要经过权限验证,与项目文档验证机制相同。
    • 注意,平台管理员及超级管理员可以管理、查看所有的项目及数据。
  • 易用性升级
    • RAP文档编辑页面增加返回按钮,有returnUrl时返回到returnUrl,反之返回到我的主页。
    • 优化tabs超多时的样式错乱问题。
  • 用户体验升级
    • 升级Bootstrap到最新版
    • 重写主页,完善pageTester等页面的样式
  • Bugs修复(见issues)

团队管理

创建团队

未创建团队,且未被加入到任何团队的用户(团队为空),在团队菜单位置显示“创建团队”。

有所在团队时,显示团队列表及创建团队按钮

点击创建团队后,出现创建团队会话

默认为仅团队成员访问,如果选择公开访问,所有RAP用户都具有该团队项目的只读权限。

若当前登陆用户是该团队的创建者,或管理员,团队名称右边会出现一个设置按钮,点击后进入到团队成员管理。

管理团队

团队管理界面可以管理团队中的成员,包括添加/删除成员,增加/移除管理员权限等等。

团队管理界面中,也可以删除团队,该操作会删除掉所有该团队中业务线、分组及项目!!!该操作需要二次确认(输入团队名称后确认)。

团队管理界面中,还可以切换团队的私有、公开属性。新创建的团队,建议为私有团队,旧的团队数据为公开团队。

团队列表

菜单中的团队列表,默认显示全部团队,超过30个最后显示“更多团队”以进入带翻页的团队列表页。在菜单中的团队列表里,有一个“显示公开团队”的checkbox,默认选中。(存cookie中记住)

在checkbox反选时,仅显示用户加入、创建的团队(其中也可能包含公开团队)。

团队列表页就是一个带检索、翻页的团队列表,点击后可以查看该团队下的业务线,并引导到项目。平台管理员、超管会多一个“管理”按钮,若该用户为该团队的管理员,也出现该按钮,点击后进入到团队管理页面。点击title会进入到该业务线。

菜单中的团队菜单项,点击将进入该团队列表,hover时显示TOP 30。

平台成员管理

和团队管理类似,管理员登陆后,菜单新增菜单项“管理”,显示所有用户并进行管理。

技术设计

团队管理

删除成员涉及到其它实体的变化,当尝试删除一个用户user时候,将执行以下操作:

  1. 删除掉user参与项目的关系(tb_project_and_user)
  2. 若项目创建人为user,则修改该项目创建人为正在进行删除操作的管理员

新增tb_corporation_and_user表,用于存储团队内成员列表及成员权限。

权限方面,团队的超级管理员可以管理任何团队成员(包括团队的超级管理员),团队的一般管理员只能管理团队的普通用户,团队的普通用户不能进入团队管理界面。

*注意:以上超级管理员、普通管理员、普通用户,该角色仅限于特定的团队,
       例如用户A在团队T1中是管理员,在T2是不同用户。
       需要与RAP系统的用户、管理员区分开。

项目表(tb_project)和团队/公司表(tb_corporation)增加权限类型(access_type)字段,用于标示访问权限(具体见数据库设计部分)

可见性

团队列表仅显示创建/加入的团队,目前用户量不大,现计算就好了。未来考虑优化。

访问权限

业务线/分组/项目/页面控制台等页面,访问时做权限验证,验证不通过则跳转至异常页面。

团队列表中,将显示:1). 所有公开团队。2). 所有该用户创建或加入的团队。

项目访问验证逻辑:

  1. 该用户是否为平台管理员或超级管理员,若是,放行
  2. 该用户是否为该项目的成员或创建者,若是,放行
  3. 该用户是否为该项目所在团队的团队成员 a). 若是,判断该项目是否为私密项目,若是,禁止访问。若不是私密项目,放行
  4. 其它均禁止访问

业务线/分组判断逻辑同项目。

数据库设计

团队成员关系表

增加团队成员关系表tb_corporation_and_user,用于管理团队及成员间关系。role_id关联tb_role, user为一般团队成员,admin为团队管理员, god为超级管理员.

CREATE TABLE tb_corporation_and_user
(
	user_id int(10) NOT NULL,
	corporation_id int(10) NOT NULL,
	role_id int(10) NOT NULL,

	PRIMARY KEY(user_id, corporation_id),
	FOREIGN KEY(user_id) REFERENCES tb_user(id),
	FOREIGN KEY(corporation_id) REFERENCES tb_corporation(id),
	FOREIGN KEY(role_id) REFERENCES tb_role(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
团队表增加新列:访问权限
ALTER TABLE tb_corporation
	ADD COLUMN access_type TINYINT NOT NULL COMMENT '权限控制, 10普通, 20公开'
		DEFAULT 10;

ALTER TABLE tb_corporation
	ADD COLUMN `desc` text NOT NULL COMMENT '备注';
项目增加新列:访问权限
ALTER TABLE tb_project
	ADD COLUMN access_type TINYINT NOT NULL COMMENT '权限控制, 10普通, 0私有'
		DEFAULT 10;

平台成员管理

同团队管理,文案改改即可。

其它问题

数据迁移

因为阿里内部用户较多,且均为全公开的情况。我们在添加团队时,会存在公开团队的选项,若为公开团队,则所有用户可见。在做数据迁移时,老的团队均为公开团队。但团队的创建者可以改为标准团队

标准团队仅对团队创建者及成员可见,而公开团队对全部用户可见。