UNPKG

flexbiz-server

Version:

Flexible Server

15 lines (14 loc) 6.59 kB
'use strict';const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Customer=global.getModel("customer"),Token=global.getModel("token"),App=global.getModel("app"),Participant=global.getModel("participant"),request=require("request"); module.exports=function($app$$){function $getProfile$$($token$$,$callback$$){request({url:$token$$.access_token?"https://www.googleapis.com/userinfo/v2/me":"https://oauth2.googleapis.com/tokeninfo?id_token="+$token$$.id_token,headers:{Authorization:$token$$.access_token?`Bearer ${$token$$.access_token}`:null}},($e_profileUser$$,$res$$,$body$$)=>{if($e_profileUser$$)return $callback$$($e_profileUser$$);$e_profileUser$$=JSON.parse($body$$);if($e_profileUser$$.error)return $callback$$($e_profileUser$$.error); $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0].value);$e_profileUser$$.emails||($e_profileUser$$.emails=[{value:$e_profileUser$$.email||$e_profileUser$$.id}]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$|| !$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;if(!$e$jscomp$0$$)try{$e$jscomp$0$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$jscomp$0$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email, id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()}).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$rs$$?$resolve$$($rs$$):$resolve$$(null)})})}async function $createUser$$($accessToken$$, $profile$$,$done$$){setImmediate(async()=>{let $u$$=await $checkExistUser$$($profile$$.emails[0].value);if($u$$){if($u$$.google&&$u$$.google.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"google"})).save(function($e$$){if($e$$)return console.log("error create token",$e$$),$done$$($e$$);$done$$(null,$u$$)});return}console.error(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`, $u$$);return $done$$(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}User.findOne({"google.id":$profile$$.id||$profile$$.email},async function($error$$,$user$$){if($error$$)return $done$$($error$$);if($user$$){if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");console.log("update user....");$user$$.google.name=$profile$$.displayName;$profile$$._json&&($user$$.google.picture=$profile$$._json.image.url); $user$$.token=$accessToken$$;$user$$.name=$profile$$.displayName;$user$$.join_date||($user$$.join_date=new Date);$user$$.server="google";$user$$.local||($user$$.picture=$user$$.google.picture,$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture});$user$$.picture||($user$$.picture=$user$$.google.picture);$user$$.save(function($err$jscomp$1_token$$,$user$$){if($err$jscomp$1_token$$)return console.log("error update user",$err$jscomp$1_token$$),$done$$($err$jscomp$1_token$$);$err$jscomp$1_token$$= new Token({email:$user$$.email,token:$accessToken$$,service:"google"});$addUserToCompany$$($profile$$,$user$$);$err$jscomp$1_token$$.save(function($e$$){return $e$$?(console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})}else console.log("create new user...",$profile$$.email),$user$$=new User,$user$$.current_user=$profile$$.emails[0].value,$user$$.google.id=$profile$$.id,$user$$.google.email=$profile$$.emails[0].value,$user$$.google.name=$profile$$.displayName,$profile$$._json&& ($user$$.google.picture=$profile$$._json.image.url),$user$$.token=$accessToken$$,$user$$.email=$profile$$.emails[0].value,$user$$.name=$profile$$.displayName,$user$$.picture=$user$$.google.picture,$user$$.join_date=new Date,$user$$.server="google",$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture},$user$$.save(function($err$$,$user$$){if($err$$)return console.log("error create new user",$err$$),$done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email, token:$accessToken$$,service:"google"})).save(function($e$$){return $e$$?(console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})})})}$app$$.get("/profile/google",($idToken_req$$,$res$$)=>{let $access_token$$=$idToken_req$$.query.access_token;$idToken_req$$=$idToken_req$$.query.id_token;if(!$access_token$$&&!$idToken_req$$)return $res$$.status(400).send("this API require access_token or id_token parameter");$getProfile$$({id_token:$idToken_req$$,access_token:$access_token$$}, ($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);User.findOne({"google.id":$profileUser$$.id.toString()},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.registed=$rs$$?!0:!1;$res$$.send($profileUser$$)})})});$app$$.get("/createuser/google",($req$$,$res$$)=>{let $access_token$$=$req$$.query.access_token,$idToken$$=$req$$.query.id_token;if(!$access_token$$&&!$idToken$$)return $res$$.status(400).send("this API require access_token or id_token parameter"); $getProfile$$({id_token:$idToken$$,access_token:$access_token$$},($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);$profileUser$$.id_app=$req$$.query.id_app;$profileUser$$.group_id=$req$$.query.group_id;$profileUser$$.email||($profileUser$$.email=$req$$.query.email||$profileUser$$.id);$profileUser$$.password=$req$$.query.password;let $token$$=$access_token$$||$idToken$$;$createUser$$($token$$,$profileUser$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$); $rs$$.toObject&&($rs$$=$rs$$.toObject());$rs$$.access_token=$token$$;$res$$.send($rs$$)})})})};