flexbiz-server
Version:
Flexible Server
11 lines (10 loc) • 4.84 kB
JavaScript
const model=global.getModel("listinfo"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),underscore=require("underscore"),async=require("async"),{onAfterCommit}=require("../../libs/sessionContext");
module.exports=function($router$$){(new controller($router$$,model,"listinfo",{sort:{code:1},require_id_app:!1,unique:["code"],onFinding:($$or_endpoints_user$$,$condition$$,$next$$)=>{$condition$$.is_endpoint&&($$or_endpoints_user$$=Object.values(global.controllers).filter($v$$=>$condition$$.require_id_app&&$v$$.options.require_id_app==0?!1:!0).map($v$$=>$v$$.name.toLowerCase()),delete $condition$$.require_id_app,delete $condition$$.is_endpoint,$condition$$.code&&($$or_endpoints_user$$=$$or_endpoints_user$$.filter($e$$=>
$e$$==$condition$$.code)),$$or_endpoints_user$$=[{api_code:{$in:$$or_endpoints_user$$}},{code:{$in:$$or_endpoints_user$$}}],$condition$$.$or?$condition$$.$and?$condition$$.$and.push({$or:$$or_endpoints_user$$}):$condition$$.$and=[{$or:$$or_endpoints_user$$},{...$condition$$}]:$condition$$.$or=$$or_endpoints_user$$);delete $condition$$.is_endpoint;Logger.info("condition listinfo",JSON.stringify($condition$$,null,2));$next$$(null,$condition$$)},onCreating:($user$$,$obj$$,$next$$)=>{if(!underscore.contains(configs.admins,
$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$obj$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.code&&$data$$.code!==$obj$$.code&&$obj$$.create_model)return $next$$("Kh\u00f4ng th\u1ec3 s\u1eeda code c\u1ee7a danh m\u1ee5c n\u00e0y");if($obj$$.allow_users&&$obj$$.allow_users.split(",").indexOf($user$$.email)>=0)return $next$$(null,$data$$,$obj$$);const {subAdmins:$subAdmins$$,
admins:$usersAdmin$$}=configs;if($subAdmins$$.indexOf($user$$.email)>=0){for(let $key$$ in $data$$)$key$$!="fields"&&delete $data$$[$key$$];return $next$$(null,$data$$,$obj$$)}if(!underscore.contains($usersAdmin$$,$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase())&&($obj$$.allow_users||"").indexOf($user$$.email)<0)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$data$$,$obj$$)},onCreated:($user$$,$obj$$,$next$$)=>{onAfterCommit(()=>
{$obj$$.create_model&&(Logger.info("created listinfo",$obj$$.code),model.createController(global.routerAPI,$obj$$),global.getModel("user").socketSendToOtherServer("system","listinfo_updated",{listinfo_id:$obj$$._id}))});$next$$(null,$obj$$)},onUpdated:($user$$,$obj$$,$next$$)=>{onAfterCommit(()=>{$obj$$.create_model&&(Logger.info("updated listinfo",$obj$$.code),model.createController(global.routerAPI,$obj$$),global.getModel("user").socketSendToOtherServer("system","listinfo_updated",{listinfo_id:$obj$$._id}))});
$next$$(null,$obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{if($obj$$.user_created!==$user$$.email&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$obj$$)},onView:($user$$,$items$$,$next$$)=>{const {admins:$usersAdmin$$,subAdmins:$subAdmins$$}=configs;!underscore.contains($usersAdmin$$,$user$$.email)&&$subAdmins$$.indexOf($user$$.email)<0&&!isSupperAdmin($user$$.email.toLowerCase())&&($items$$=
$items$$.filter($i$$=>$i$$.code!="listinfo"&&$i$$.code!="reportinfo"&&$i$$.code!="moduleinfo"&&$i$$.code!="menuinfo"));async.map($items$$,($item$$,$callback$$)=>{setImmediate(async()=>{await ($item$$.fields||[]).filter($field$$=>$field$$.ref_model).asyncJoinModel2(null,"listinfo",{where:{ref_model:"code"},fields:[{ref_api:"api_code"}]});let $schema$$;$item$$.require_id_app==="false"&&($item$$.require_id_app=!1);$item$$.require_id_app==="true"&&($item$$.require_id_app=!0);$item$$.not_need_right===
"false"&&($item$$.not_need_right=!1);$item$$.not_need_right==="true"&&($item$$.not_need_right=!0);if($item$$.mother_code){let [$code$$,$child$$,$child2$$,$child3$$]=$item$$.mother_code.split("/");var $_model__model$$=global.mongoose.models[$code$$];$_model__model$$&&($schema$$=$_model__model$$.schema)&&$child$$&&$schema$$.paths[$child$$]&&($schema$$=$schema$$.paths[$child$$].schema)&&$child2$$&&$schema$$.paths[$child2$$]&&($schema$$=$schema$$.paths[$child2$$].schema)&&$child3$$&&$schema$$.paths[$child3$$]&&
($schema$$=$schema$$.paths[$child3$$].schema)}else if($_model__model$$=global.mongoose.models[$item$$.code])$schema$$=$_model__model$$.schema;$schema$$&&($item$$.fields||[]).forEach($field$$=>{var $maxlength_path$$=$schema$$.paths[$field$$.name];$maxlength_path$$&&$field$$.type==="String"&&($maxlength_path$$=$maxlength_path$$.options.maxlength||4E3,$field$$.maxlength=$field$$.maxlength||$maxlength_path$$)});$callback$$()})},()=>{$next$$(null,$items$$)})}})).route()};