UNPKG

flexbiz-server

Version:

Flexible Server

11 lines (10 loc) 4.67 kB
const model=global.getModel("participant"),User=global.getModel("user"),usergroup=global.getModel("usergroup"),controller=require("../../controllers/controller"),async=require("async"),redisCache=require("../../libs/redis-cache"),{onAfterCommit}=require("../../libs/sessionContext"); module.exports=function($router$$){(new controller($router$$,model,"participant",{sort:{date_created:-1},unique:["id_app","email"],onFinding:async($user$$,$condition$$,$next$$)=>{if($condition$$.groups&&!$condition$$.group_id)try{let $groups$$=(await usergroup.getList($user$$.current_id_app,$condition$$.groups)).map($g$$=>$g$$._id);delete $condition$$.groups;$groups$$=$groups$$.concat([null,"",void 0]);$condition$$.group_id={$in:$groups$$};$next$$(null,$condition$$)}catch($e$$){$next$$($e$$.message)}else $next$$(null, $condition$$)},onView:($user$$,$items$$,$next$$)=>{async.parallel({u:$callback$$=>{$items$$.joinModel2(null,User,[{where:{email:"email"},fields:[{picture:"picture"},{email2:"email2"}],setFields:($item$$,$ref$$)=>{$item$$.name||($item$$.name=$ref$$.name)}}],function(){$callback$$()})},group:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,usergroup,[{where:{group_id:"_id"},fields:["group_name","is_customer_group","is_employee_group"]}],function(){$callback$$()})},verified:$callback$$=>{mongoose.models.assuser_identity? $items$$.joinModel2($user$$.current_id_app,global.getModel("assuser_identity"),[{where:{email:"user_created"},fields:[{trang_thai_xac_thuc:"trang_thai"}],setFields:($item$$,$ref$$)=>{$item$$.name||($item$$.name=$ref$$.name)}}],function(){$items$$.filter($i$$=>$i$$.trang_thai_xac_thuc).joinModel2(null,global.getModel("trangthai"),[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai_xac_thuc,ma_ct:"ASSUSER_IDENTITY"}),fields:[{ten_trang_thai_xac_thuc:"ten_trang_thai"},"color"]}],function(){$callback$$()})}): $callback$$()}},()=>{$items$$.forEach($item$$=>{$item$$.real_name&&($item$$.name=$item$$.real_name);delete $item$$.password});$next$$(null,$items$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.phone){let $u$$=await global.getModel("user").findOne({$or:[{"local.phone":$data$$.phone},{email:$data$$.phone}]});if($u$$&&$u$$.email!==$obj$$.email)return $next$$("S\u1ed1 \u0111i\u1ec7n tho\u1ea1i "+$data$$.phone+" \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng")}delete $data$$.password; if($data$$.admin&&!$obj$$.admin&&!$user$$.appAdmin)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1eb7t ng\u01b0\u1eddi n\u00e0y l\u00e0 ng\u01b0\u1eddi qu\u1ea3n tr\u1ecb");$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{onAfterCommit(async()=>{if($obj$$?.phone||$obj$$?.active){let $u$$=await User.findOne({email:$obj$$.email});$u$$&&($u$$.local=$u$$.local||{},$u$$.local.phone=$obj$$.phone,$u$$.local.active||($u$$.local.active=$obj$$?.active),await $u$$.save(), redisCache.set("user",$u$$.toObject(),function($e$$){$e$$&&Logger.error($e$$)}))}});$next$$(null,$obj$$)},onCreating:async($u$jscomp$2_user$$,$data$$,$next$$)=>{if($data$$.auto_create_user&&$data$$.password&&$data$$.phone&&($u$jscomp$2_user$$=await global.getModel("user").findOne({$or:[{"local.phone":$data$$.phone},{email:$data$$.phone}]}))&&$u$jscomp$2_user$$.email!==$data$$.email)return $next$$("S\u1ed1 \u0111i\u1ec7n tho\u1ea1i "+$data$$.phone+" \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng"); $next$$(null,$data$$)},onCreated:async($user$$,$_obj$$,$next$$)=>{onAfterCommit(async()=>{const $obj$$=await model.findOne({_id:$_obj$$._id});$obj$$?.auto_create_user&&$obj$$?.password&&User.findOne({email:$obj$$.email},async($e$$,$rs$$)=>{if($e$$)return Logger.error("[participant] [created] error find user:",$e$$),$next$$(null,$_obj$$);if($rs$$)return Logger.info("[participant] user exists, update participant password..."),$rs$$.password=$rs$$.generateHash($obj$$.email+$obj$$.password),await $rs$$.save(), $next$$(null,$_obj$$);$e$$=new User;$e$$.email=$obj$$.email;$e$$.name=$obj$$.name;$e$$.local={};$e$$.local.email=$obj$$.email;$e$$.local.name=$obj$$.name;$e$$.local.phone=$obj$$.phone;$e$$.local.active=!0;$e$$.local.password=$e$$.generateHash($e$$.email+$obj$$.password);$e$$.save(async($e$$,$_user$$)=>{if($e$$)return await model.deleteOne({_id:$obj$$._id}),Logger.error(`Kh\u00f4ng th\u1ec3 t\u1ea1o ng\u01b0\u1eddi d\u00f9ng ${$obj$$.email}, L\u1ed7i: ${$e$$.message}`);redisCache.set("user",$_user$$.toObject(), function($e$$){$e$$&&Logger.error($e$$)})})})});$next$$(null,$_obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{if($user$$.email==$obj$$.email)return $next$$("Kh\u00f4ng th\u1ec3 xo\u00e1 ng\u01b0\u1eddi s\u1eed d\u1ee5ng n\u00e0y");$next$$(null,$obj$$)}})).route()};