简单的用户-角色权限模型管理

lrf402788946 83832f5889 update 3 jaren geleden
.github 1fd7272568 init 4 jaren geleden
app 891d4d5a57 修改用户修改bug 4 jaren geleden
config 3d1f6efcaa update 4 jaren geleden
test 1fd7272568 init 4 jaren geleden
.autod.conf.js 1fd7272568 init 4 jaren geleden
.eslintignore 1fd7272568 init 4 jaren geleden
.eslintrc 1fd7272568 init 4 jaren geleden
.gitignore 1fd7272568 init 4 jaren geleden
.travis.yml 1fd7272568 init 4 jaren geleden
README.md 2728da6f26 多租户需要修改框架的地方,写在readme里了 4 jaren geleden
appveyor.yml 1fd7272568 init 4 jaren geleden
ecosystem.config.js d6a51bc751 update 4 jaren geleden
package.json 3d1f6efcaa update 4 jaren geleden
server.js 83832f5889 update 3 jaren geleden

README.md

service-auth

权限角色

因为使用框架的多租户模式有bug,但是框架又没改,所以需要手动在服务器把 naf-framework-mongoose>lib>plugin>egg-multi-tenancy>app>extend>application中 loadModel2改为下面代码

const loadModel2 = (app, tenant) => { app.logger.info([multi-tenancy] Load tenant models for ${tenant}); const model = {}; _.forEach(app.model, (val, key) => {

val = getModel(val, key)
if(!val||val.length<=0){
   app.logger.debug(`[multi-tenancy] catalog have error! model not found`)
   return;
}
for (const obj of val) {
  _.forIn(obj,(v,k)=>{
    const modelName = `${v.modelName}@${tenant}`;
    const collName = `${v.collection.name}`;
    const multiTenancy = v.schema.get('multi-tenancy');
    if (multiTenancy) {
      app.logger.debug(`[multi-tenancy] ${modelName} loaded`);
      const schema = v.schema.clone();
      schema.set('x-tenant', tenant);
      schema.plugin(multiTenancyPlugin, app.config.multiTenancy);
      model[k] = v.db.model(modelName, schema, collName);
    } else {
      app.logger.debug(`[multi-tenancy] skip ${v.modelName}, schema not enable multi-tenancy.`);
      model[k] = v;
    }
  })
}

}); return model; };

并添加

const getModel = (object, key) => { let res = []; if(!_.isFunction(object)) {

// 如果不是function,说明这是子目录,需要将object中每个key作为自己的新key,否则会导致model丢失
  _.forIn(object, (v,k)=>{
    res = [...res,...getModel(v,k)]
  })

} else {

// 根目录,直接搞
const obj = {};
obj[key] = object;
res.push(obj);

}; return res; }

QuickStart

see egg docs for more detail.

Development

$ npm i
$ npm run dev
$ open http://localhost:7001/

Deploy

$ npm start
$ npm stop

npm scripts

  • Use npm run lint to check code style.
  • Use npm test to run unit test.
  • Use npm run autod to auto detect dependencies upgrade, see autod for more detail.