Built motion from commit (unavailable).|2.5.1
[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 _0x9125=['concat','catch','exports','models','define','User','users','updateMd5Password','changed','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2','sha1','provider',':asterisk:','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal'];(function(_0x41ec9d,_0x40012c){var _0x3c9172=function(_0x3a62f3){while(--_0x3a62f3){_0x41ec9d['push'](_0x41ec9d['shift']());}};_0x3c9172(++_0x40012c);}(_0x9125,0x17c));var _0x5912=function(_0x46c865,_0x154b2f){_0x46c865=_0x46c865-0x0;var _0x200973=_0x9125[_0x46c865];return _0x200973;};'use strict';var BPromise=require(_0x5912('0x0'));var crypto=require(_0x5912('0x1'));var util=require(_0x5912('0x2'));var md5=require(_0x5912('0x3'));var _=require(_0x5912('0x4'));var attributes=require(_0x5912('0x5'));var authTypes=[_0x5912('0x6')];var validatePresenceOf=function(_0x262515){return _0x262515&&_0x262515[_0x5912('0x7')];};var getChanSpyApplications=function(_0xb28447,_0x801d32,_0x38006f){var _0x16ff8b={'context':_0xb28447[_0x5912('0x8')]||'from-sip','type':_0x5912('0x9'),'isApp':![],'UserId':_0xb28447['id']};var _0x3add2c=[];for(var _0x2b234d=0x0,_0x1069a6=0x1;_0x2b234d<_0x38006f[_0x5912('0x7')];_0x2b234d++,_0x1069a6=0x1){var _0x5a283d={'exten':util[_0x5912('0xa')](_0x5912('0xb'),_0x38006f[_0x2b234d][_0x5912('0xc')],_0x801d32),'ChanSpyId':_0x38006f[_0x2b234d]['id']};_0x3add2c[_0x5912('0xd')](_['merge']({'app':_0x5912('0xe'),'appdata':util[_0x5912('0xa')](_0x5912('0xf'),_0x5912('0x10')),'priority':_0x1069a6++},_0x16ff8b,_0x5a283d));if(_0x38006f[_0x2b234d][_0x5912('0x11')]){_0x3add2c[_0x5912('0xd')](_[_0x5912('0x12')]({'app':'MixMonitor','appdata':util[_0x5912('0xa')](_0x5912('0x13'),_0x38006f[_0x2b234d][_0x5912('0x14')]),'priority':_0x1069a6++},_0x16ff8b,_0x5a283d));}if(_0x38006f[_0x2b234d][_0x5912('0x15')]){_0x3add2c[_0x5912('0xd')](_['merge']({'app':_0x5912('0x16'),'appdata':_0x38006f[_0x2b234d][_0x5912('0x17')],'priority':_0x1069a6++},_0x16ff8b,_0x5a283d));}_0x3add2c[_0x5912('0xd')](_['merge']({'app':_0x5912('0x18'),'appdata':util[_0x5912('0xa')](_0x5912('0x19'),_0xb28447[_0x5912('0x1a')],_0x38006f[_0x2b234d][_0x5912('0x1b')]?_0x38006f[_0x2b234d]['options']['join'](''):''),'priority':_0x1069a6++},_0x16ff8b,_0x5a283d));if(_0x38006f[_0x2b234d][_0x5912('0x11')]){_0x3add2c[_0x5912('0xd')](_[_0x5912('0x12')]({'app':'StopMixMonitor','priority':_0x1069a6++},_0x16ff8b,_0x5a283d));}}return _0x3add2c;};var getUserApplications=function(_0x4a382d,_0x5cdbeb){var _0x1f542d=[_0x5912('0x1c'),_0x5912('0x1d'),_0x5912('0x1e')];var _0x27b267={'context':_0x4a382d[_0x5912('0x8')]||_0x5912('0x1f'),'exten':_0x5cdbeb,'type':_0x5912('0x9'),'isApp':![],'UserId':_0x4a382d['id']};var _0x26571d=[{'app':_0x5912('0xe'),'appdata':_0x5912('0x20')}];if(_0x4a382d[_0x5912('0x21')]&&_[_0x5912('0x22')](_0x1f542d,_0x4a382d['extensionMonitor'])){_0x26571d[_0x5912('0xd')]({'app':'Set','appdata':_0x5912('0x23')});_0x26571d[_0x5912('0xd')]({'app':_0x5912('0xe'),'appdata':util[_0x5912('0xa')](_0x5912('0x24'),_0x4a382d[_0x5912('0x21')])});_0x26571d[_0x5912('0xd')]({'app':'Dial','appdata':util['format'](_0x5912('0x25'),_0x4a382d[_0x5912('0x1a')])});}else{_0x26571d[_0x5912('0xd')]({'app':_0x5912('0x26'),'appdata':util['format']('SIP/%s,,tTxX',_0x4a382d['name'])});}_0x26571d['push']({'app':_0x5912('0x27')});for(var _0x4389e2=0x0;_0x4389e2<_0x26571d[_0x5912('0x7')];_0x4389e2++){_0x26571d[_0x4389e2][_0x5912('0x28')]=_0x4389e2+0x1;_0x26571d[_0x4389e2]=_[_0x5912('0x29')](_0x26571d[_0x4389e2],_0x27b267);}return _0x26571d;};var getChanSpyPromise=function(_0x35c559,_0x2dda60){return new BPromise(function(_0xc9c41f,_0x2686d4){return _0x35c559[_0x5912('0x2a')][_0x5912('0x2b')]()[_0x5912('0x2c')](function(_0x3d495e){if(_0x3d495e){var _0x2c841d=getChanSpyApplications(_0x2dda60,_0x2dda60[_0x5912('0x2d')],_0x3d495e);if(_0x2dda60[_0x5912('0x2d')]!=_0x2dda60[_0x5912('0x1a')]){_0x2c841d=_0x2c841d[_0x5912('0x2e')](getChanSpyApplications(_0x2dda60,_0x2dda60[_0x5912('0x1a')],_0x3d495e));}return _0xc9c41f(_0x2c841d);}return _0xc9c41f([]);})[_0x5912('0x2f')](function(_0x1db738){_0x2686d4(_0x1db738);});});};module[_0x5912('0x30')]=function(_0x5c5f74,_0x157fef){var _0x55d812=_0x5c5f74[_0x5912('0x31')];return _0x5c5f74[_0x5912('0x32')](_0x5912('0x33'),attributes,{'tableName':_0x5912('0x34'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x12ba39,_0x9618ed,_0x22a132){_0x12ba39[_0x5912('0x35')]();_0x12ba39['updatePassword'](_0x22a132);},'beforeUpdate':function(_0x5aa803,_0x4739de,_0xfdfd53){if(_0x5aa803[_0x5912('0x36')]('password')){_0x5aa803[_0x5912('0x35')]();return _0x5aa803['updatePassword'](_0xfdfd53);}_0xfdfd53();},'afterCreate':function(_0x30095e,_0x4b7678,_0x203cdb){var _0xb54a8d=getUserApplications(_0x30095e,_0x30095e[_0x5912('0x2d')]);if(_0x30095e[_0x5912('0x2d')]!=_0x30095e[_0x5912('0x1a')]){_0xb54a8d=_0xb54a8d[_0x5912('0x2e')](getUserApplications(_0x30095e,_0x30095e[_0x5912('0x1a')]));}return _0x55d812[_0x5912('0x37')][_0x5912('0x38')](_0xb54a8d)[_0x5912('0x2c')](function(){if(_0x30095e[_0x5912('0x10')]){return getChanSpyPromise(_0x55d812,_0x30095e);}})[_0x5912('0x2c')](function(_0x4d1614){if(_0x4d1614&&_0x4d1614[_0x5912('0x7')]){return _0x55d812[_0x5912('0x37')][_0x5912('0x38')](_0x4d1614);}})[_0x5912('0x2c')](function(){_0x203cdb();})[_0x5912('0x2f')](function(_0x5e88e5){_0x203cdb(_0x5e88e5);});},'afterUpdate':function(_0x282f9f,_0x1c7106,_0x3fed21){return BPromise[_0x5912('0x39')]()[_0x5912('0x2c')](function(){if(_0x282f9f[_0x5912('0x36')](_0x5912('0x10'))||_0x282f9f[_0x5912('0x36')](_0x5912('0x8'))){return _0x55d812[_0x5912('0x37')]['destroy']({'where':{'UserId':_0x282f9f['id'],'type':_0x5912('0x9'),'ChanSpyId':{'$ne':null}}})[_0x5912('0x2c')](function(){if(_0x282f9f['chanspy']){return getChanSpyPromise(_0x55d812,_0x282f9f)[_0x5912('0x2c')](function(_0x30619e){if(_0x30619e&&_0x30619e[_0x5912('0x7')]){return _0x55d812[_0x5912('0x37')][_0x5912('0x38')](_0x30619e);}});}});}})[_0x5912('0x2c')](function(){if(_0x282f9f[_0x5912('0x36')]('extensionMonitor')||_0x282f9f[_0x5912('0x36')](_0x5912('0x8'))){return _0x55d812[_0x5912('0x37')][_0x5912('0x3a')]({'where':{'UserId':_0x282f9f['id'],'type':_0x5912('0x9'),'ChanSpyId':null}})[_0x5912('0x2c')](function(){var _0x183c51=getUserApplications(_0x282f9f,_0x282f9f[_0x5912('0x2d')]);if(_0x282f9f['internal']!=_0x282f9f[_0x5912('0x1a')]){_0x183c51=_0x183c51[_0x5912('0x2e')](getUserApplications(_0x282f9f,_0x282f9f[_0x5912('0x1a')]));}return _0x55d812[_0x5912('0x37')]['bulkCreate'](_0x183c51);});}})['then'](function(){_0x3fed21();})[_0x5912('0x2f')](function(_0x1d553a){_0x3fed21(_0x1d553a);});},'afterDestroy':function(_0x1f9fba,_0x4817e2){return _0x55d812[_0x5912('0x37')][_0x5912('0x3a')]({'where':{'UserId':_0x1f9fba['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3945af,_0x49a4ee){if(!_0x49a4ee){return this[_0x5912('0x17')]===this[_0x5912('0x3b')](_0x3945af);}var _0x40de92=this;this[_0x5912('0x3b')](_0x3945af,function(_0x3cc3d8,_0x1060be){if(_0x3cc3d8){_0x49a4ee(_0x3cc3d8);}if(_0x40de92[_0x5912('0x17')]===_0x1060be){_0x49a4ee(null,!![]);}else{_0x49a4ee(null,![]);}});},'makeSalt':function(_0x5bc7bc,_0x1a9f5f){var _0x387dc4=0x10;if(typeof arguments[0x0]===_0x5912('0x3c')){_0x1a9f5f=arguments[0x0];_0x5bc7bc=_0x387dc4;}else if(typeof arguments[0x1]===_0x5912('0x3c')){_0x1a9f5f=arguments[0x1];}else{throw new Error(_0x5912('0x3d'));}if(!_0x5bc7bc){_0x5bc7bc=_0x387dc4;}return crypto[_0x5912('0x3e')](_0x5bc7bc,function(_0x155199,_0x23b585){if(_0x155199){_0x1a9f5f(_0x155199);}return _0x1a9f5f(null,_0x23b585[_0x5912('0x3f')](_0x5912('0x40')));});},'encryptPassword':function(_0x2d12ff,_0x2fe246){if(!_0x2d12ff||!this['salt']){return _0x2fe246?_0x2fe246(null):null;}var _0x521f4c=0x2710;var _0x4cd855=0x40;var _0x51441b=new Buffer(this[_0x5912('0x41')],'base64');if(!_0x2fe246){return crypto['pbkdf2Sync'](_0x2d12ff,_0x51441b,_0x521f4c,_0x4cd855,'sha1')[_0x5912('0x3f')](_0x5912('0x40'));}return crypto[_0x5912('0x42')](_0x2d12ff,_0x51441b,_0x521f4c,_0x4cd855,_0x5912('0x43'),function(_0x533a1f,_0x217306){if(_0x533a1f){_0x2fe246(_0x533a1f);}return _0x2fe246(null,_0x217306[_0x5912('0x3f')](_0x5912('0x40')));});},'updatePassword':function(_0x1bd5a0){if(!this['password']){return _0x1bd5a0(null);}if(!validatePresenceOf(this[_0x5912('0x17')])&&authTypes['indexOf'](this[_0x5912('0x44')])===-0x1){_0x1bd5a0(new Error('Invalid\x20password'));}var _0x2c2fa1=this;this['makeSalt'](function(_0x74830a,_0x5b87d6){if(_0x74830a){return _0x1bd5a0(_0x74830a);}_0x2c2fa1[_0x5912('0x41')]=_0x5b87d6;_0x2c2fa1[_0x5912('0x3b')](_0x2c2fa1[_0x5912('0x17')],function(_0x5b1df3,_0x26ec83){if(_0x5b1df3){_0x1bd5a0(_0x5b1df3);}_0x2c2fa1[_0x5912('0x17')]=_0x26ec83;_0x1bd5a0(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x5912('0x1a')]+_0x5912('0x45')+this[_0x5912('0x17')]);return this[_0x5912('0x46')];}}});};