开放平台多租户设计

一、流程

1、开放平台的账户注册,注册后需要完善公司信息,建立当前开放平台账户和公司之间的关系

      前提:超级管理员登录后需要给普通角色增加访问授权,能够添加自己的租户公司信息

      开放平台用户注册:

      -------默认为租户普通角色,默认关联公司为蜂擎公司(是系统级别)【在自己的租户列表不显示】,

      -------负责增加自己下属的租户公司,给公司选择添加应用

      -------同时,首页有系统管理连接出现,当前账户可以进入开放平台后台,进行日常的管理,比如充值.....

---------------------------------------------------------------------------------------------------------------------------------------------------------

 -------------------------------------------------------------------------------------------------------------------------------------------

    前提:超级管理员登录后需要给普通角色增加访问授权,能够添加自己的租户公司信息

    开放平台的注册用户具有管理每个应用租户的功能

    开放平台用户注册的是开放平台账户,默认开放平台角色,默认添加关联公司(蜂擎)

     每个应用中利用会话保存在company

    开放平台超管建立

          用户角色(普通-开放平台账户)

    购物车内添加租户切换功能,记录当前准备进入或选择APP的租户公司,利用会话保存即将进入或操作的公司在incompany

    切换时不要修改 会话company,而应该修改会话incompany

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 概念:

开放平台的用户----租户

租户可以添加自己下属的公司信息

租户切换公司,给公司添加应用(添加应用时候,创建以当前开放平台账号创建对应应用的管理员)

进入应用(利用当前用户信息和具体app来实现登录),应用中界面需要实现系统管理连接,点击

2、注册成功登录后,需要在上下文里保存当前用户的所在公司信息

3、普通开放平台用户(租户)选择要购买的应用,进入应用介绍,进行购买,购买成功后,

      在对应应用中建立管理员账户(账户名和电话和密码一致),账户关联的公司是开放平台账户所在公司

      同时,建立公司和应用之间的关系,按照公司,可以查询出选择了哪些应用

4 、开放平台内我的应用,按照我当前的公司,查询出我选购的应用

      点打开某个应用,---请求后台以当前的用户身份去登录具体某个应用,返回/auth?opencode--在客户端作重定向到具体应用

       具体应用处理opencode,在应用内作具体登录。----进入应用后,点击系统管理,以当前用户身份到平台登录

      var sysLoginUrl=settings.paasUrl()+"web/auth/userCtl/login?appKey="+settings.appKey+"&toKey="+settings.paasKey;
       var x={userName:user.userName,password:user.password,mobile:user.mobile};
      var restResult=await this.restS.execPost({u:x},sysLoginUrl);
       来源appKey="+settings.appKey
       目的toKey="+settings.paasKey;-登录成功后需要去的目的APP
返回值是jumlUrl(平台后台管理地址)?code=xxxx&srcKey=xxxx,平台后台处理会
     app.get("/auth",async function(req,res){
        var code=req.query.code;
        var srcKey=req.query.srcKey;
        if(!code){
            return res.redirect("/admin");
        }else{
            await userCtl.authByCode(req);//在平台登录,添加公司上下文信息
            res.redirect("/admin?appKey="+srcKey);--重定向进入平台管理后台,上下文是某个具体应用
        }
    });
 
原文地址:https://www.cnblogs.com/justart/p/11540933.html