Built motion from commit (unavailable).|2.5.15
[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 _0xdcf3=['Missing\x20Callback','toString','salt','pbkdf2Sync','base64','pbkdf2','sha1','indexOf','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','prefix','push','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','SIP/%s,%s','options','join','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','Set','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','name','Hangup','priority','VoiceChanSpy','findAll','then','internal','catch','models','define','users','utf8','utf8_bin','updateMd5Password','updatePassword','concat','VoiceExtension','bulkCreate','resolve','changed','destroy','encryptPassword','function'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xdcf3,0xdd));var _0x3dcf=function(_0x591925,_0x2b1a6a){_0x591925=_0x591925-0x0;var _0x38b433=_0xdcf3[_0x591925];return _0x38b433;};'use strict';var BPromise=require(_0x3dcf('0x0'));var crypto=require(_0x3dcf('0x1'));var util=require(_0x3dcf('0x2'));var md5=require(_0x3dcf('0x3'));var _=require(_0x3dcf('0x4'));var attributes=require(_0x3dcf('0x5'));var authTypes=[_0x3dcf('0x6')];var validatePresenceOf=function(_0x3aa8fb){return _0x3aa8fb&&_0x3aa8fb[_0x3dcf('0x7')];};var getChanSpyApplications=function(_0x57b840,_0x2da251,_0x199daf){var _0xd760e8={'context':_0x57b840[_0x3dcf('0x8')]||_0x3dcf('0x9'),'type':_0x3dcf('0xa'),'isApp':![],'UserId':_0x57b840['id']};var _0x226583=[];for(var _0x1ad18e=0x0,_0x400ade=0x1;_0x1ad18e<_0x199daf[_0x3dcf('0x7')];_0x1ad18e++,_0x400ade=0x1){var _0x3aae98={'exten':util[_0x3dcf('0xb')]('%s%s',_0x199daf[_0x1ad18e][_0x3dcf('0xc')],_0x2da251),'ChanSpyId':_0x199daf[_0x1ad18e]['id']};_0x226583[_0x3dcf('0xd')](_['merge']({'app':'Set','appdata':util['format'](_0x3dcf('0xe'),_0x3dcf('0xf')),'priority':_0x400ade++},_0xd760e8,_0x3aae98));if(_0x199daf[_0x1ad18e][_0x3dcf('0x10')]){_0x226583[_0x3dcf('0xd')](_[_0x3dcf('0x11')]({'app':_0x3dcf('0x12'),'appdata':util[_0x3dcf('0xb')](_0x3dcf('0x13'),_0x199daf[_0x1ad18e]['recordingFormat']),'priority':_0x400ade++},_0xd760e8,_0x3aae98));}if(_0x199daf[_0x1ad18e][_0x3dcf('0x14')]){_0x226583[_0x3dcf('0xd')](_[_0x3dcf('0x11')]({'app':_0x3dcf('0x15'),'appdata':_0x199daf[_0x1ad18e][_0x3dcf('0x16')],'priority':_0x400ade++},_0xd760e8,_0x3aae98));}_0x226583[_0x3dcf('0xd')](_['merge']({'app':'ChanSpy','appdata':util[_0x3dcf('0xb')](_0x3dcf('0x17'),_0x57b840['name'],_0x199daf[_0x1ad18e][_0x3dcf('0x18')]?_0x199daf[_0x1ad18e][_0x3dcf('0x18')][_0x3dcf('0x19')](''):''),'priority':_0x400ade++},_0xd760e8,_0x3aae98));if(_0x199daf[_0x1ad18e][_0x3dcf('0x10')]){_0x226583[_0x3dcf('0xd')](_[_0x3dcf('0x11')]({'app':_0x3dcf('0x1a'),'priority':_0x400ade++},_0xd760e8,_0x3aae98));}}return _0x226583;};var getUserApplications=function(_0x8e6a6a,_0x24a297){var _0x58c8e8=['wav',_0x3dcf('0x1b'),_0x3dcf('0x1c')];var _0x2bbe3d={'context':_0x8e6a6a[_0x3dcf('0x8')]||_0x3dcf('0x9'),'exten':_0x24a297,'type':_0x3dcf('0xa'),'isApp':![],'UserId':_0x8e6a6a['id']};var _0x3856e3=[{'app':'Set','appdata':_0x3dcf('0x1d')}];if(_0x8e6a6a[_0x3dcf('0x1e')]&&_[_0x3dcf('0x1f')](_0x58c8e8,_0x8e6a6a[_0x3dcf('0x1e')])){_0x3856e3[_0x3dcf('0xd')]({'app':_0x3dcf('0x20'),'appdata':_0x3dcf('0x21')});_0x3856e3[_0x3dcf('0xd')]({'app':_0x3dcf('0x20'),'appdata':util[_0x3dcf('0xb')](_0x3dcf('0x22'),_0x8e6a6a['extensionMonitor'])});_0x3856e3[_0x3dcf('0xd')]({'app':_0x3dcf('0x23'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x8e6a6a[_0x3dcf('0x24')])});}else{_0x3856e3[_0x3dcf('0xd')]({'app':_0x3dcf('0x23'),'appdata':util[_0x3dcf('0xb')]('SIP/%s,,tTxX',_0x8e6a6a['name'])});}_0x3856e3['push']({'app':_0x3dcf('0x25')});for(var _0x5bebb3=0x0;_0x5bebb3<_0x3856e3[_0x3dcf('0x7')];_0x5bebb3++){_0x3856e3[_0x5bebb3][_0x3dcf('0x26')]=_0x5bebb3+0x1;_0x3856e3[_0x5bebb3]=_['defaults'](_0x3856e3[_0x5bebb3],_0x2bbe3d);}return _0x3856e3;};var getChanSpyPromise=function(_0x4e22c8,_0x26eead){return new BPromise(function(_0x40043f,_0x4007ab){return _0x4e22c8[_0x3dcf('0x27')][_0x3dcf('0x28')]()[_0x3dcf('0x29')](function(_0x89c29a){if(_0x89c29a){var _0x33ac4b=getChanSpyApplications(_0x26eead,_0x26eead['internal'],_0x89c29a);if(_0x26eead[_0x3dcf('0x2a')]!=_0x26eead[_0x3dcf('0x24')]){_0x33ac4b=_0x33ac4b['concat'](getChanSpyApplications(_0x26eead,_0x26eead[_0x3dcf('0x24')],_0x89c29a));}return _0x40043f(_0x33ac4b);}return _0x40043f([]);})[_0x3dcf('0x2b')](function(_0xf95b5){_0x4007ab(_0xf95b5);});});};module['exports']=function(_0x4d31a1,_0x45dce5){var _0x23a7f6=_0x4d31a1[_0x3dcf('0x2c')];return _0x4d31a1[_0x3dcf('0x2d')]('User',attributes,{'tableName':_0x3dcf('0x2e'),'charset':_0x3dcf('0x2f'),'collate':_0x3dcf('0x30'),'hooks':{'beforeCreate':function(_0xa73120,_0x4439bd,_0x425123){_0xa73120[_0x3dcf('0x31')]();_0xa73120['updatePassword'](_0x425123);},'beforeUpdate':function(_0x4bb4e5,_0x193cca,_0x31864e){if(_0x4bb4e5['changed']('password')){_0x4bb4e5[_0x3dcf('0x31')]();return _0x4bb4e5[_0x3dcf('0x32')](_0x31864e);}_0x31864e();},'afterCreate':function(_0x417f36,_0x3a3916,_0x3cfa8a){var _0x523dcd=getUserApplications(_0x417f36,_0x417f36[_0x3dcf('0x2a')]);if(_0x417f36[_0x3dcf('0x2a')]!=_0x417f36['name']){_0x523dcd=_0x523dcd[_0x3dcf('0x33')](getUserApplications(_0x417f36,_0x417f36[_0x3dcf('0x24')]));}return _0x23a7f6[_0x3dcf('0x34')][_0x3dcf('0x35')](_0x523dcd)[_0x3dcf('0x29')](function(){if(_0x417f36['chanspy']){return getChanSpyPromise(_0x23a7f6,_0x417f36);}})[_0x3dcf('0x29')](function(_0x2d0c4d){if(_0x2d0c4d&&_0x2d0c4d[_0x3dcf('0x7')]){return _0x23a7f6[_0x3dcf('0x34')][_0x3dcf('0x35')](_0x2d0c4d);}})[_0x3dcf('0x29')](function(){_0x3cfa8a();})[_0x3dcf('0x2b')](function(_0x31b1fc){_0x3cfa8a(_0x31b1fc);});},'afterUpdate':function(_0x2cc118,_0x4ca225,_0x30df73){return BPromise[_0x3dcf('0x36')]()[_0x3dcf('0x29')](function(){if(_0x2cc118[_0x3dcf('0x37')]('chanspy')||_0x2cc118[_0x3dcf('0x37')]('context')){return _0x23a7f6[_0x3dcf('0x34')][_0x3dcf('0x38')]({'where':{'UserId':_0x2cc118['id'],'type':_0x3dcf('0xa'),'ChanSpyId':{'$ne':null}}})[_0x3dcf('0x29')](function(){if(_0x2cc118['chanspy']){return getChanSpyPromise(_0x23a7f6,_0x2cc118)['then'](function(_0x1a2d6d){if(_0x1a2d6d&&_0x1a2d6d[_0x3dcf('0x7')]){return _0x23a7f6[_0x3dcf('0x34')][_0x3dcf('0x35')](_0x1a2d6d);}});}});}})['then'](function(){if(_0x2cc118[_0x3dcf('0x37')]('extensionMonitor')||_0x2cc118['changed'](_0x3dcf('0x8'))){return _0x23a7f6[_0x3dcf('0x34')][_0x3dcf('0x38')]({'where':{'UserId':_0x2cc118['id'],'type':'system','ChanSpyId':null}})[_0x3dcf('0x29')](function(){var _0x2cbc93=getUserApplications(_0x2cc118,_0x2cc118['internal']);if(_0x2cc118[_0x3dcf('0x2a')]!=_0x2cc118['name']){_0x2cbc93=_0x2cbc93[_0x3dcf('0x33')](getUserApplications(_0x2cc118,_0x2cc118['name']));}return _0x23a7f6['VoiceExtension']['bulkCreate'](_0x2cbc93);});}})[_0x3dcf('0x29')](function(){_0x30df73();})['catch'](function(_0x31cf73){_0x30df73(_0x31cf73);});},'afterDestroy':function(_0x4d9789,_0x348b73){return _0x23a7f6[_0x3dcf('0x34')]['destroy']({'where':{'UserId':_0x4d9789['id'],'type':_0x3dcf('0xa')}});}},'instanceMethods':{'authenticate':function(_0x369776,_0x49717f){if(!_0x49717f){return this[_0x3dcf('0x16')]===this[_0x3dcf('0x39')](_0x369776);}var _0x2b1efa=this;this[_0x3dcf('0x39')](_0x369776,function(_0xc91658,_0x10324a){if(_0xc91658){_0x49717f(_0xc91658);}if(_0x2b1efa[_0x3dcf('0x16')]===_0x10324a){_0x49717f(null,!![]);}else{_0x49717f(null,![]);}});},'makeSalt':function(_0x1427a6,_0x588a50){var _0x2c65ac=0x10;if(typeof arguments[0x0]===_0x3dcf('0x3a')){_0x588a50=arguments[0x0];_0x1427a6=_0x2c65ac;}else if(typeof arguments[0x1]===_0x3dcf('0x3a')){_0x588a50=arguments[0x1];}else{throw new Error(_0x3dcf('0x3b'));}if(!_0x1427a6){_0x1427a6=_0x2c65ac;}return crypto['randomBytes'](_0x1427a6,function(_0x3b559d,_0x598bed){if(_0x3b559d){_0x588a50(_0x3b559d);}return _0x588a50(null,_0x598bed[_0x3dcf('0x3c')]('base64'));});},'encryptPassword':function(_0x16ed96,_0x4952d4){if(!_0x16ed96||!this['salt']){return _0x4952d4?_0x4952d4(null):null;}var _0x2c409f=0x2710;var _0x2280bb=0x40;var _0x1f90e8=new Buffer(this[_0x3dcf('0x3d')],'base64');if(!_0x4952d4){return crypto[_0x3dcf('0x3e')](_0x16ed96,_0x1f90e8,_0x2c409f,_0x2280bb,'sha1')[_0x3dcf('0x3c')](_0x3dcf('0x3f'));}return crypto[_0x3dcf('0x40')](_0x16ed96,_0x1f90e8,_0x2c409f,_0x2280bb,_0x3dcf('0x41'),function(_0x4de9f3,_0x229eaa){if(_0x4de9f3){_0x4952d4(_0x4de9f3);}return _0x4952d4(null,_0x229eaa[_0x3dcf('0x3c')](_0x3dcf('0x3f')));});},'updatePassword':function(_0x13f6b7){if(!this[_0x3dcf('0x16')]){return _0x13f6b7(null);}if(!validatePresenceOf(this[_0x3dcf('0x16')])&&authTypes[_0x3dcf('0x42')](this['provider'])===-0x1){_0x13f6b7(new Error(_0x3dcf('0x43')));}var _0x4176df=this;this['makeSalt'](function(_0x6fbac,_0x288a91){if(_0x6fbac){return _0x13f6b7(_0x6fbac);}_0x4176df[_0x3dcf('0x3d')]=_0x288a91;_0x4176df[_0x3dcf('0x39')](_0x4176df[_0x3dcf('0x16')],function(_0x179e00,_0x5313ab){if(_0x179e00){_0x13f6b7(_0x179e00);}_0x4176df[_0x3dcf('0x16')]=_0x5313ab;_0x13f6b7(null);});});},'updateMd5Password':function(){this[_0x3dcf('0x44')]=md5(this['name']+_0x3dcf('0x45')+this[_0x3dcf('0x16')]);return this['md5secret'];}}});};