Closed situ2001 closed 2 years ago
阅读opensumi源代码,查看框架里是否已经有类似的“用户模型”(避免重复)
有,但不确定是否能用上。是下面这个,经过大致的分析,这应该是用来存储与管理第三方登录等验证信息(如GitHub OAuth)的,然后给模块和插件使用的。
与协同编辑相关的模块可能会用到相关的用户信息(如remote-opener用到了clientId)。
我们也许可以直接使用这个service。思路:只要登录成功,我们就可以取到用户信息了,并保证用户是通过认证的。用户加入与退出协同,可以通过Browser侧的login
和logout
方法来决定(协同模块监听AuthenticationSessionsChangeEvent
)。但是这样的话,我们这个协同模块就会依赖于AuthenticationService
了。
并且,能通过getSessions
获取的信息,大致只有这些。
所以,我们要不要把与协同有关的用户模型(包含用户名,用户id以及将来会有的用户权限等其他信息)给独立定义出来呢??
第三方
AuthenticationService 是兼容插件 API 的实现,本身只是为了实现第三方登录,协同有关的用户信息并不是第三方,而是由 IDE 集成方提供的
第三方
AuthenticationService 是兼容插件 API 的实现,本身只是为了实现第三方登录,协同有关的用户信息并不是第三方,而是由 IDE 集成方提供的
ok,对于这个用户信息,我根据我的个人理解与思路大致画了个图
第三方
AuthenticationService 是兼容插件 API 的实现,本身只是为了实现第三方登录,协同有关的用户信息并不是第三方,而是由 IDE 集成方提供的
ok,对于这个用户信息,我根据我的个人理解与思路大致画了个图
另外一种简单的方法:在startup处将用户id、用户名等信息写到AppConfig里,协同模块在初始化时候直接读取即可。这样做,用户信息在web的整个生命周期下都是不变的,只有刷新页面的时候,信息才可能会改变(取决于集成方的具体实现)
协同模块要用到的用户信息简单定义如下
export interface UserInfo {
id: string; // unique id
nickname: string; // will be displayed on live cursor
// may be more data fields
}
第三方
AuthenticationService 是兼容插件 API 的实现,本身只是为了实现第三方登录,协同有关的用户信息并不是第三方,而是由 IDE 集成方提供的
ok,对于这个用户信息,我根据我的个人理解与思路大致画了个图
为了便于未来协同功能的拓展,用户信息注册 使用的是贡献点机制,而不是直接添加到AppConfig
。
TODO
UserInfoForCollaborationContribution
重命名为CollaborationContribution
Deferred due to #5
本阶段为 https://github.com/opensumi/core/issues/1097 定义标准的用户模型
Date: from 08/01 to 08/12
Todo