2e3e5c7283bd8da92b63a1b30ecb50db4b6c98bf
[motion2.git] / server / api / user / user.model.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x0009=['Dial','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','concat','catch','exports','models','define','User','users','utf8_bin','changed','updateMd5Password','internal','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','pbkdf2Sync','pbkdf2','sha1','Invalid\x20password','makeSalt',':asterisk:','crypto','lodash','./user.attributes','google','length','context','system','format','%s%s','prefix','push','merge','Set','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s'];(function(_0x196dec,_0x245874){var _0x49f803=function(_0x2bf71a){while(--_0x2bf71a){_0x196dec['push'](_0x196dec['shift']());}};_0x49f803(++_0x245874);}(_0x0009,0x16c));var _0x9000=function(_0x530f66,_0x41bcb7){_0x530f66=_0x530f66-0x0;var _0x23a441=_0x0009[_0x530f66];return _0x23a441;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x9000('0x0'));var util=require('util');var md5=require('md5');var _=require(_0x9000('0x1'));var attributes=require(_0x9000('0x2'));var authTypes=[_0x9000('0x3')];var validatePresenceOf=function(_0x50a192){return _0x50a192&&_0x50a192[_0x9000('0x4')];};var getChanSpyApplications=function(_0x22889c,_0x4f1054,_0x156dc9){var _0x1e4454={'context':_0x22889c[_0x9000('0x5')]||'from-sip','type':_0x9000('0x6'),'isApp':![],'UserId':_0x22889c['id']};var _0x1296a8=[];for(var _0x4ac830=0x0,_0x598482=0x1;_0x4ac830<_0x156dc9[_0x9000('0x4')];_0x4ac830++,_0x598482=0x1){var _0x5442bc={'exten':util[_0x9000('0x7')](_0x9000('0x8'),_0x156dc9[_0x4ac830][_0x9000('0x9')],_0x4f1054),'ChanSpyId':_0x156dc9[_0x4ac830]['id']};_0x1296a8[_0x9000('0xa')](_[_0x9000('0xb')]({'app':_0x9000('0xc'),'appdata':util['format']('CDR(type)=%s',_0x9000('0xd')),'priority':_0x598482++},_0x1e4454,_0x5442bc));if(_0x156dc9[_0x4ac830]['record']){_0x1296a8[_0x9000('0xa')](_[_0x9000('0xb')]({'app':_0x9000('0xe'),'appdata':util['format'](_0x9000('0xf'),_0x156dc9[_0x4ac830][_0x9000('0x10')]),'priority':_0x598482++},_0x1e4454,_0x5442bc));}if(_0x156dc9[_0x4ac830][_0x9000('0x11')]){_0x1296a8['push'](_['merge']({'app':'Authenticate','appdata':_0x156dc9[_0x4ac830][_0x9000('0x12')],'priority':_0x598482++},_0x1e4454,_0x5442bc));}_0x1296a8[_0x9000('0xa')](_['merge']({'app':_0x9000('0x13'),'appdata':util[_0x9000('0x7')](_0x9000('0x14'),_0x22889c[_0x9000('0x15')],_0x156dc9[_0x4ac830][_0x9000('0x16')]?_0x156dc9[_0x4ac830][_0x9000('0x16')][_0x9000('0x17')](''):''),'priority':_0x598482++},_0x1e4454,_0x5442bc));if(_0x156dc9[_0x4ac830]['record']){_0x1296a8['push'](_[_0x9000('0xb')]({'app':_0x9000('0x18'),'priority':_0x598482++},_0x1e4454,_0x5442bc));}}return _0x1296a8;};var getUserApplications=function(_0x3e7ccd,_0x5c371a){var _0x1fbf7f=[_0x9000('0x19'),_0x9000('0x1a'),_0x9000('0x1b')];var _0x45c3e6={'context':_0x3e7ccd['context']||'from-sip','exten':_0x5c371a,'type':_0x9000('0x6'),'isApp':![],'UserId':_0x3e7ccd['id']};var _0xbe025=[{'app':_0x9000('0xc'),'appdata':_0x9000('0x1c')}];if(_0x3e7ccd[_0x9000('0x1d')]&&_['includes'](_0x1fbf7f,_0x3e7ccd[_0x9000('0x1d')])){_0xbe025[_0x9000('0xa')]({'app':_0x9000('0xc'),'appdata':_0x9000('0x1e')});_0xbe025[_0x9000('0xa')]({'app':'Set','appdata':util[_0x9000('0x7')](_0x9000('0x1f'),_0x3e7ccd[_0x9000('0x1d')])});_0xbe025[_0x9000('0xa')]({'app':_0x9000('0x20'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3e7ccd['name'])});}else{_0xbe025[_0x9000('0xa')]({'app':'Dial','appdata':util['format'](_0x9000('0x21'),_0x3e7ccd[_0x9000('0x15')])});}_0xbe025[_0x9000('0xa')]({'app':_0x9000('0x22')});for(var _0x667e50=0x0;_0x667e50<_0xbe025['length'];_0x667e50++){_0xbe025[_0x667e50]['priority']=_0x667e50+0x1;_0xbe025[_0x667e50]=_[_0x9000('0x23')](_0xbe025[_0x667e50],_0x45c3e6);}return _0xbe025;};var getChanSpyPromise=function(_0x13b644,_0xaeff5a){return new BPromise(function(_0x1f3820,_0x2a435d){return _0x13b644[_0x9000('0x24')][_0x9000('0x25')]()[_0x9000('0x26')](function(_0x4462ec){if(_0x4462ec){var _0x3952cb=getChanSpyApplications(_0xaeff5a,_0xaeff5a['internal'],_0x4462ec);if(_0xaeff5a['internal']!=_0xaeff5a['name']){_0x3952cb=_0x3952cb[_0x9000('0x27')](getChanSpyApplications(_0xaeff5a,_0xaeff5a[_0x9000('0x15')],_0x4462ec));}return _0x1f3820(_0x3952cb);}return _0x1f3820([]);})[_0x9000('0x28')](function(_0x5af60c){_0x2a435d(_0x5af60c);});});};module[_0x9000('0x29')]=function(_0x1fcbdf,_0x2a1f77){var _0x3d1d0d=_0x1fcbdf[_0x9000('0x2a')];return _0x1fcbdf[_0x9000('0x2b')](_0x9000('0x2c'),attributes,{'tableName':_0x9000('0x2d'),'charset':'utf8','collate':_0x9000('0x2e'),'hooks':{'beforeCreate':function(_0x159068,_0x1f256c,_0x16bdcc){_0x159068['updateMd5Password']();_0x159068['updatePassword'](_0x16bdcc);},'beforeUpdate':function(_0xdec61e,_0x4796e,_0xceb517){if(_0xdec61e[_0x9000('0x2f')](_0x9000('0x12'))){_0xdec61e[_0x9000('0x30')]();return _0xdec61e['updatePassword'](_0xceb517);}_0xceb517();},'afterCreate':function(_0x18c0c9,_0x5bb38a,_0x388030){var _0x506cbb=getUserApplications(_0x18c0c9,_0x18c0c9[_0x9000('0x31')]);if(_0x18c0c9['internal']!=_0x18c0c9[_0x9000('0x15')]){_0x506cbb=_0x506cbb['concat'](getUserApplications(_0x18c0c9,_0x18c0c9[_0x9000('0x15')]));}return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x33')](_0x506cbb)['then'](function(){if(_0x18c0c9[_0x9000('0xd')]){return getChanSpyPromise(_0x3d1d0d,_0x18c0c9);}})[_0x9000('0x26')](function(_0xf48b2d){if(_0xf48b2d&&_0xf48b2d[_0x9000('0x4')]){return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x33')](_0xf48b2d);}})[_0x9000('0x26')](function(){_0x388030();})['catch'](function(_0x1dff5e){_0x388030(_0x1dff5e);});},'afterUpdate':function(_0x370f98,_0x140266,_0x47324f){return BPromise[_0x9000('0x34')]()[_0x9000('0x26')](function(){if(_0x370f98[_0x9000('0x2f')]('chanspy')||_0x370f98[_0x9000('0x2f')](_0x9000('0x5'))){return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x35')]({'where':{'UserId':_0x370f98['id'],'type':_0x9000('0x6'),'ChanSpyId':{'$ne':null}}})[_0x9000('0x26')](function(){if(_0x370f98[_0x9000('0xd')]){return getChanSpyPromise(_0x3d1d0d,_0x370f98)[_0x9000('0x26')](function(_0x5557c1){if(_0x5557c1&&_0x5557c1[_0x9000('0x4')]){return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x33')](_0x5557c1);}});}});}})['then'](function(){if(_0x370f98[_0x9000('0x2f')](_0x9000('0x1d'))||_0x370f98[_0x9000('0x2f')](_0x9000('0x5'))){return _0x3d1d0d[_0x9000('0x32')]['destroy']({'where':{'UserId':_0x370f98['id'],'type':_0x9000('0x6'),'ChanSpyId':null}})['then'](function(){var _0x2c5193=getUserApplications(_0x370f98,_0x370f98[_0x9000('0x31')]);if(_0x370f98[_0x9000('0x31')]!=_0x370f98[_0x9000('0x15')]){_0x2c5193=_0x2c5193[_0x9000('0x27')](getUserApplications(_0x370f98,_0x370f98[_0x9000('0x15')]));}return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x33')](_0x2c5193);});}})[_0x9000('0x26')](function(){_0x47324f();})[_0x9000('0x28')](function(_0x2a807b){_0x47324f(_0x2a807b);});},'afterDestroy':function(_0x2978f8,_0x3cc518){return _0x3d1d0d[_0x9000('0x32')][_0x9000('0x35')]({'where':{'UserId':_0x2978f8['id'],'type':_0x9000('0x6')}});}},'instanceMethods':{'authenticate':function(_0x296731,_0x329ae1){if(!_0x329ae1){return this['password']===this[_0x9000('0x36')](_0x296731);}var _0x5aab1a=this;this[_0x9000('0x36')](_0x296731,function(_0x5c8ecb,_0x15b457){if(_0x5c8ecb){_0x329ae1(_0x5c8ecb);}if(_0x5aab1a[_0x9000('0x12')]===_0x15b457){_0x329ae1(null,!![]);}else{_0x329ae1(null,![]);}});},'makeSalt':function(_0x7d68cf,_0x887e61){var _0x26803b=0x10;if(typeof arguments[0x0]===_0x9000('0x37')){_0x887e61=arguments[0x0];_0x7d68cf=_0x26803b;}else if(typeof arguments[0x1]===_0x9000('0x37')){_0x887e61=arguments[0x1];}else{throw new Error(_0x9000('0x38'));}if(!_0x7d68cf){_0x7d68cf=_0x26803b;}return crypto['randomBytes'](_0x7d68cf,function(_0x5b919f,_0x4bcaed){if(_0x5b919f){_0x887e61(_0x5b919f);}return _0x887e61(null,_0x4bcaed[_0x9000('0x39')](_0x9000('0x3a')));});},'encryptPassword':function(_0x53af48,_0xa5d2d8){if(!_0x53af48||!this[_0x9000('0x3b')]){return _0xa5d2d8?_0xa5d2d8(null):null;}var _0x49b851=0x2710;var _0x5380e1=0x40;var _0x4375ed=new Buffer(this[_0x9000('0x3b')],'base64');if(!_0xa5d2d8){return crypto[_0x9000('0x3c')](_0x53af48,_0x4375ed,_0x49b851,_0x5380e1,'sha1')[_0x9000('0x39')](_0x9000('0x3a'));}return crypto[_0x9000('0x3d')](_0x53af48,_0x4375ed,_0x49b851,_0x5380e1,_0x9000('0x3e'),function(_0x5b3c0b,_0x1dfb58){if(_0x5b3c0b){_0xa5d2d8(_0x5b3c0b);}return _0xa5d2d8(null,_0x1dfb58['toString']('base64'));});},'updatePassword':function(_0x16c924){if(!this[_0x9000('0x12')]){return _0x16c924(null);}if(!validatePresenceOf(this[_0x9000('0x12')])&&authTypes['indexOf'](this['provider'])===-0x1){_0x16c924(new Error(_0x9000('0x3f')));}var _0x30375d=this;this[_0x9000('0x40')](function(_0x136bcb,_0xfac9ec){if(_0x136bcb){return _0x16c924(_0x136bcb);}_0x30375d[_0x9000('0x3b')]=_0xfac9ec;_0x30375d[_0x9000('0x36')](_0x30375d[_0x9000('0x12')],function(_0xc4bff0,_0x5d1e98){if(_0xc4bff0){_0x16c924(_0xc4bff0);}_0x30375d[_0x9000('0x12')]=_0x5d1e98;_0x16c924(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x9000('0x15')]+_0x9000('0x41')+this['password']);return this['md5secret'];}}});};