1. 社区
1.1. 基本介绍
社区是地球号用户的最高组织单位,也是独立的注册单位。社区的概念是隔绝注册的,用户在一个社区里注册后,只能在这个社区登陆,不能在另一个社区登陆。同一个电话号码可以在A社区注册,也可以在B社区注册。
1.2. 超级社区
地球号内建一个特殊的社区:XdUaDuA,任何人都可以注册这个社区的None角色。从地球号官网注册的用户具备初始角色 dua:God。这个网站将来会开放给开发者注册。目前不会开放。
地球号中只有一个超级户群:XdUaXduA。这里面的root和god用户都可以访问其它户群,具体表现在这些人持有的token中的有效负载如下:
{ugrp:"XdUaXduA",role:"root"}
或者{ugrp:"XdUaXduA",role:"god"}
当各大api接口在看到来着token拥有这样的token后,就要尊重其跨户群访问的权力:比如token的ugrp是XdUaXduA,但要查询的ugrp条件却不是XdUaXduA,这个时候就要尊权执行。
地球号内建一个特殊的户群:XdUaDuA,任何人都可以注册这个户群的none角色。从地球号官网注册的用户具备初始角色 dua:none,地球号的root可以把dua:none用户提拔为dua:god角色。
dua:none是注册http://www.xdua.com后默认的角色,dua:none也就唯一这个角色。
只有dua:root才可以提拔dua:god,dua:root的唯一使命就是提拔dua:god。
只有dua:root和dua:god才可以在整个地球号全局搜查。
dua:none/dua:root/dua:god都可以创建自己的户群。
户群是隔绝注册的。
1.3. 普通社区
除了XdUaXduA的其它户群都是普通户群。这些户群的注册和登录和所有行为都在本户群进行。
1.4. 应用绑定
一个应用只能绑定到一个社区,一个应用不能绑定到多个社区。这个设计固化在应用表里,在app表里,每个app有个zone_id字段(这个设计还有回旋余地)。通过这种对应关系,可以看到一个社区的应用授权列表。在这里强调App和Zone的多对1关系,是因为这确实是一个要思考的点。要思考这个问题,我们就一个一个讨论,一共有三种情况。我们分别在下面分析。分析的角度有如下几点:
- APP的登录问题,登录进入哪个Zone。
- APP生成的令牌,令牌里的sub字段只能填写一个app_id。
- APP开发的成本,例如在智慧养老环境下,护工APP和家属APP该如何区分,是同一个APK还是多个APK。同一个APK可以进入APP通过APP内选择不同的按钮来选择不同的token。
- APP要访问算法和数据的时候算哪个社区?
1.4.1. 多应用.v.多社区/单应用.v.多社区
在这种设计下,需要专门的App+Zone的绑定表支持,这种设计会出现多个问题。 问题1:App在设计登录的时候,需要尝试从多个Zone去登录,判断用户和密码。此时,如果多个Zone都有同一个电话号码的时候,就还需要其它机制来决定是按照哪个电话登录。问题2:应用生成的token令牌里的sub(app_id)字段只能填一个,不能满足这个1v多关系。
优点
这种设计好像没有什么优点。
缺点
设计复杂。而且就算是开发多APP,可以在一个APK内通过APP内部机制切换令牌。当然在网页控制台,也可以通过不同入口切换不同的令牌,切换不同的APP_ID。所以在设计上,根本不需要多v多的关系。
1.4.2. 多应用.v.单社区/单应用.v.单社区
在这种设计下,就不需要额外的App+Zone的绑定表支持。每个APP只能登录一个Zone(注意,一个用用可能包含多个APP,只要切换令牌就行。)
1.5. 算法社区
算法访问目前统一放在ALgoALgo
社区。在未来,开发者创建的算法,可以归属在开发者门下。
1.6. 数据社区
数据访问目前统一放在DaTaDaTa
社区。在未来,开发者创建的数据,可以归属在开发者门下。
[!note] 为什么必须在创建专门的社区供算法和数据用? 因为
XdUaXDuA
社区权限太高了,为了不污染它,专门造就了算法和数据社区。
1.7. 废弃讨论
户群可以被设置公开或私有,公开的户群可以被公开搜索到。现在的想法是,户群的概念不应该透露给外界,这层应该隐藏起来。在使用者看来,不知道其它的户群的存在。
户群可以被设置公开或私有,公开的户群允许来自其它户群的用户登录。私有的户群不允许来自其它的户群登录。这点现在看来,非常影响户群概念的设计。系统中只能有一个户群拥有跨群访问的权限:XdUaXduA
户群可以设置自己的应用绑定列表,没有绑定的应用是不可以登录注册这个户群的。这部分逻辑现在还没有实现。
2. 社区
2.1. 基本介绍
社区是地球号用户的最高组织单位,也是独立的注册单位。社区的概念是隔绝注册的,用户在一个社区里注册后,只能在这个社区登陆,不能在另一个社区登陆。同一个电话号码可以在A社区注册,也可以在B社区注册。
2.2. 超级社区
地球号内建一个特殊的社区:XdUaDuA,任何人都可以注册这个社区的None角色。从地球号官网注册的用户具备初始角色 dua:God。这个网站将来会开放给开发者注册。目前不会开放。
2.3. 应用绑定
一个应用只能绑定到一个社区,一个应用不能绑定到多个社区。这个设计固化在应用表里,在app表里,每个app有个zone_id字段(这个设计还有回旋余地)。通过这种对应关系,可以看到一个社区的应用授权列表。在这里强调App和Zone的多对1关系,是因为这确实是一个要思考的点。要思考这个问题,我们就一个一个讨论,一共有三种情况。我们分别在下面分析。分析的角度有如下几点:
- APP的登录问题,登录进入哪个Zone。
- APP生成的令牌,令牌里的sub字段只能填写一个app_id。
- APP开发的成本,例如在智慧养老环境下,护工APP和家属APP该如何区分,是同一个APK还是多个APK。同一个APK可以进入APP通过APP内选择不同的按钮来选择不同的token。
- APP要访问算法和数据的时候算哪个社区?
2.3.1. 多应用.v.多社区/单应用.v.多社区
在这种设计下,需要专门的App+Zone的绑定表支持,这种设计会出现多个问题。 问题1:App在设计登录的时候,需要尝试从多个Zone去登录,判断用户和密码。此时,如果多个Zone都有同一个电话号码的时候,就还需要其它机制来决定是按照哪个电话登录。问题2:应用生成的token令牌里的sub(app_id)字段只能填一个,不能满足这个1v多关系。
优点
这种设计好像没有什么优点。
缺点
设计复杂。而且就算是开发多APP,可以在一个APK内通过APP内部机制切换令牌。当然在网页控制台,也可以通过不同入口切换不同的令牌,切换不同的APP_ID。所以在设计上,根本不需要多v多的关系。
2.3.2. 多应用.v.单社区/单应用.v.单社区
在这种设计下,就不需要额外的App+Zone的绑定表支持。每个APP只能登录一个Zone(注意,一个用用可能包含多个APP,只要切换令牌就行。)
2.4. 算法社区
算法访问目前统一放在ALgoALgo
社区。在未来,开发者创建的算法,可以归属在开发者门下。
2.5. 数据社区
数据访问目前统一放在DaTaDaTa
社区。在未来,开发者创建的数据,可以归属在开发者门下。
[!note] 为什么必须在创建专门的社区供算法和数据用? 因为
XdUaXDuA
社区权限太高了,为了不污染它,专门造就了算法和数据社区。