84b7711323b30bce6705883f933df05de66e1e10
[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 _0xa5f5=['password','ChanSpy','name','options','join','StopMixMonitor','WAV','gsm','context','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','User','users','utf8_bin','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','resolve','changed','destroy','encryptPassword','function','randomBytes','toString','base64','pbkdf2Sync','pbkdf2','sha1','indexOf','provider','Invalid\x20password','makeSalt','salt','md5secret','bluebird','crypto','util','lodash','./user.attributes','google','length','from-sip','system','prefix','push','format','CDR(type)=%s','chanspy','record','recordingFormat','auth','merge'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa5f5,0x198));var _0x5a5f=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xa5f5[_0x4792c8];return _0x35edb1;};'use strict';var BPromise=require(_0x5a5f('0x0'));var crypto=require(_0x5a5f('0x1'));var util=require(_0x5a5f('0x2'));var md5=require('md5');var _=require(_0x5a5f('0x3'));var attributes=require(_0x5a5f('0x4'));var authTypes=[_0x5a5f('0x5')];var validatePresenceOf=function(_0x180819){return _0x180819&&_0x180819[_0x5a5f('0x6')];};var getChanSpyApplications=function(_0x3be34c,_0x3c45b8,_0x51edd1){var _0x37e384={'context':_0x3be34c['context']||_0x5a5f('0x7'),'type':_0x5a5f('0x8'),'isApp':![],'UserId':_0x3be34c['id']};var _0x31412e=[];for(var _0x27b1f6=0x0,_0x4417e8=0x1;_0x27b1f6<_0x51edd1['length'];_0x27b1f6++,_0x4417e8=0x1){var _0x52f192={'exten':util['format']('%s%s',_0x51edd1[_0x27b1f6][_0x5a5f('0x9')],_0x3c45b8),'ChanSpyId':_0x51edd1[_0x27b1f6]['id']};_0x31412e[_0x5a5f('0xa')](_['merge']({'app':'Set','appdata':util[_0x5a5f('0xb')](_0x5a5f('0xc'),_0x5a5f('0xd')),'priority':_0x4417e8++},_0x37e384,_0x52f192));if(_0x51edd1[_0x27b1f6][_0x5a5f('0xe')]){_0x31412e[_0x5a5f('0xa')](_['merge']({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,ab',_0x51edd1[_0x27b1f6][_0x5a5f('0xf')]),'priority':_0x4417e8++},_0x37e384,_0x52f192));}if(_0x51edd1[_0x27b1f6][_0x5a5f('0x10')]){_0x31412e['push'](_[_0x5a5f('0x11')]({'app':'Authenticate','appdata':_0x51edd1[_0x27b1f6][_0x5a5f('0x12')],'priority':_0x4417e8++},_0x37e384,_0x52f192));}_0x31412e[_0x5a5f('0xa')](_['merge']({'app':_0x5a5f('0x13'),'appdata':util[_0x5a5f('0xb')]('SIP/%s,%s',_0x3be34c[_0x5a5f('0x14')],_0x51edd1[_0x27b1f6][_0x5a5f('0x15')]?_0x51edd1[_0x27b1f6][_0x5a5f('0x15')][_0x5a5f('0x16')](''):''),'priority':_0x4417e8++},_0x37e384,_0x52f192));if(_0x51edd1[_0x27b1f6]['record']){_0x31412e[_0x5a5f('0xa')](_['merge']({'app':_0x5a5f('0x17'),'priority':_0x4417e8++},_0x37e384,_0x52f192));}}return _0x31412e;};var getUserApplications=function(_0x31cbd0,_0x7ddb18){var _0x66467=['wav',_0x5a5f('0x18'),_0x5a5f('0x19')];var _0x412cc5={'context':_0x31cbd0[_0x5a5f('0x1a')]||_0x5a5f('0x7'),'exten':_0x7ddb18,'type':_0x5a5f('0x8'),'isApp':![],'UserId':_0x31cbd0['id']};var _0x50ff40=[{'app':_0x5a5f('0x1b'),'appdata':_0x5a5f('0x1c')}];if(_0x31cbd0[_0x5a5f('0x1d')]&&_[_0x5a5f('0x1e')](_0x66467,_0x31cbd0[_0x5a5f('0x1d')])){_0x50ff40[_0x5a5f('0xa')]({'app':_0x5a5f('0x1b'),'appdata':_0x5a5f('0x1f')});_0x50ff40[_0x5a5f('0xa')]({'app':_0x5a5f('0x1b'),'appdata':util['format'](_0x5a5f('0x20'),_0x31cbd0[_0x5a5f('0x1d')])});_0x50ff40[_0x5a5f('0xa')]({'app':_0x5a5f('0x21'),'appdata':util[_0x5a5f('0xb')](_0x5a5f('0x22'),_0x31cbd0[_0x5a5f('0x14')])});}else{_0x50ff40[_0x5a5f('0xa')]({'app':_0x5a5f('0x21'),'appdata':util[_0x5a5f('0xb')](_0x5a5f('0x23'),_0x31cbd0[_0x5a5f('0x14')])});}_0x50ff40[_0x5a5f('0xa')]({'app':_0x5a5f('0x24')});for(var _0x55036c=0x0;_0x55036c<_0x50ff40[_0x5a5f('0x6')];_0x55036c++){_0x50ff40[_0x55036c][_0x5a5f('0x25')]=_0x55036c+0x1;_0x50ff40[_0x55036c]=_[_0x5a5f('0x26')](_0x50ff40[_0x55036c],_0x412cc5);}return _0x50ff40;};var getChanSpyPromise=function(_0x321d3b,_0x480f1a){return new BPromise(function(_0xda4940,_0x574fbd){return _0x321d3b[_0x5a5f('0x27')][_0x5a5f('0x28')]()[_0x5a5f('0x29')](function(_0x3efe22){if(_0x3efe22){var _0x5c9ac9=getChanSpyApplications(_0x480f1a,_0x480f1a[_0x5a5f('0x2a')],_0x3efe22);if(_0x480f1a[_0x5a5f('0x2a')]!=_0x480f1a['name']){_0x5c9ac9=_0x5c9ac9[_0x5a5f('0x2b')](getChanSpyApplications(_0x480f1a,_0x480f1a[_0x5a5f('0x14')],_0x3efe22));}return _0xda4940(_0x5c9ac9);}return _0xda4940([]);})[_0x5a5f('0x2c')](function(_0x3e0c07){_0x574fbd(_0x3e0c07);});});};module['exports']=function(_0x2c6155,_0x5c8990){var _0x17799b=_0x2c6155[_0x5a5f('0x2d')];return _0x2c6155[_0x5a5f('0x2e')](_0x5a5f('0x2f'),attributes,{'tableName':_0x5a5f('0x30'),'charset':'utf8','collate':_0x5a5f('0x31'),'hooks':{'beforeCreate':function(_0x581067,_0x363fbf,_0x23d630){_0x581067[_0x5a5f('0x32')]();_0x581067[_0x5a5f('0x33')](_0x23d630);},'beforeUpdate':function(_0x505b9c,_0x722f07,_0x131c2f){if(_0x505b9c['changed'](_0x5a5f('0x12'))){_0x505b9c[_0x5a5f('0x32')]();return _0x505b9c[_0x5a5f('0x33')](_0x131c2f);}_0x131c2f();},'afterCreate':function(_0x8788a7,_0x536d06,_0xb72b35){var _0x2f8615=getUserApplications(_0x8788a7,_0x8788a7['internal']);if(_0x8788a7[_0x5a5f('0x2a')]!=_0x8788a7[_0x5a5f('0x14')]){_0x2f8615=_0x2f8615[_0x5a5f('0x2b')](getUserApplications(_0x8788a7,_0x8788a7[_0x5a5f('0x14')]));}return _0x17799b[_0x5a5f('0x34')][_0x5a5f('0x35')](_0x2f8615)[_0x5a5f('0x29')](function(){if(_0x8788a7[_0x5a5f('0xd')]){return getChanSpyPromise(_0x17799b,_0x8788a7);}})['then'](function(_0x126aba){if(_0x126aba&&_0x126aba[_0x5a5f('0x6')]){return _0x17799b[_0x5a5f('0x34')][_0x5a5f('0x35')](_0x126aba);}})[_0x5a5f('0x29')](function(){_0xb72b35();})[_0x5a5f('0x2c')](function(_0xc22027){_0xb72b35(_0xc22027);});},'afterUpdate':function(_0x521b38,_0x414c74,_0x20e944){return BPromise[_0x5a5f('0x36')]()['then'](function(){if(_0x521b38[_0x5a5f('0x37')](_0x5a5f('0xd'))||_0x521b38['changed'](_0x5a5f('0x1a'))){return _0x17799b['VoiceExtension']['destroy']({'where':{'UserId':_0x521b38['id'],'type':_0x5a5f('0x8'),'ChanSpyId':{'$ne':null}}})[_0x5a5f('0x29')](function(){if(_0x521b38[_0x5a5f('0xd')]){return getChanSpyPromise(_0x17799b,_0x521b38)[_0x5a5f('0x29')](function(_0xea0959){if(_0xea0959&&_0xea0959['length']){return _0x17799b[_0x5a5f('0x34')][_0x5a5f('0x35')](_0xea0959);}});}});}})[_0x5a5f('0x29')](function(){if(_0x521b38[_0x5a5f('0x37')](_0x5a5f('0x1d'))||_0x521b38[_0x5a5f('0x37')](_0x5a5f('0x1a'))){return _0x17799b['VoiceExtension'][_0x5a5f('0x38')]({'where':{'UserId':_0x521b38['id'],'type':_0x5a5f('0x8'),'ChanSpyId':null}})[_0x5a5f('0x29')](function(){var _0xd508a8=getUserApplications(_0x521b38,_0x521b38[_0x5a5f('0x2a')]);if(_0x521b38[_0x5a5f('0x2a')]!=_0x521b38['name']){_0xd508a8=_0xd508a8[_0x5a5f('0x2b')](getUserApplications(_0x521b38,_0x521b38[_0x5a5f('0x14')]));}return _0x17799b['VoiceExtension'][_0x5a5f('0x35')](_0xd508a8);});}})[_0x5a5f('0x29')](function(){_0x20e944();})[_0x5a5f('0x2c')](function(_0x5ae119){_0x20e944(_0x5ae119);});},'afterDestroy':function(_0x2440de,_0x522426){return _0x17799b[_0x5a5f('0x34')][_0x5a5f('0x38')]({'where':{'UserId':_0x2440de['id'],'type':_0x5a5f('0x8')}});}},'instanceMethods':{'authenticate':function(_0x3affa8,_0x1dd53a){if(!_0x1dd53a){return this[_0x5a5f('0x12')]===this[_0x5a5f('0x39')](_0x3affa8);}var _0x49263e=this;this[_0x5a5f('0x39')](_0x3affa8,function(_0x1412a5,_0x174144){if(_0x1412a5){_0x1dd53a(_0x1412a5);}if(_0x49263e[_0x5a5f('0x12')]===_0x174144){_0x1dd53a(null,!![]);}else{_0x1dd53a(null,![]);}});},'makeSalt':function(_0x3dc7bb,_0x2cf873){var _0x1970a3=0x10;if(typeof arguments[0x0]===_0x5a5f('0x3a')){_0x2cf873=arguments[0x0];_0x3dc7bb=_0x1970a3;}else if(typeof arguments[0x1]==='function'){_0x2cf873=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x3dc7bb){_0x3dc7bb=_0x1970a3;}return crypto[_0x5a5f('0x3b')](_0x3dc7bb,function(_0x3d8db4,_0xf68799){if(_0x3d8db4){_0x2cf873(_0x3d8db4);}return _0x2cf873(null,_0xf68799[_0x5a5f('0x3c')](_0x5a5f('0x3d')));});},'encryptPassword':function(_0x2ae409,_0x92f7e){if(!_0x2ae409||!this['salt']){return _0x92f7e?_0x92f7e(null):null;}var _0x5e4a97=0x2710;var _0x150831=0x40;var _0x3d1fbc=new Buffer(this['salt'],'base64');if(!_0x92f7e){return crypto[_0x5a5f('0x3e')](_0x2ae409,_0x3d1fbc,_0x5e4a97,_0x150831,'sha1')[_0x5a5f('0x3c')](_0x5a5f('0x3d'));}return crypto[_0x5a5f('0x3f')](_0x2ae409,_0x3d1fbc,_0x5e4a97,_0x150831,_0x5a5f('0x40'),function(_0xcb8042,_0x4e30e2){if(_0xcb8042){_0x92f7e(_0xcb8042);}return _0x92f7e(null,_0x4e30e2['toString'](_0x5a5f('0x3d')));});},'updatePassword':function(_0x152ba0){if(!this[_0x5a5f('0x12')]){return _0x152ba0(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x5a5f('0x41')](this[_0x5a5f('0x42')])===-0x1){_0x152ba0(new Error(_0x5a5f('0x43')));}var _0x1f88e7=this;this[_0x5a5f('0x44')](function(_0x12195e,_0x48f32f){if(_0x12195e){return _0x152ba0(_0x12195e);}_0x1f88e7[_0x5a5f('0x45')]=_0x48f32f;_0x1f88e7[_0x5a5f('0x39')](_0x1f88e7[_0x5a5f('0x12')],function(_0x10fc82,_0x2b4202){if(_0x10fc82){_0x152ba0(_0x10fc82);}_0x1f88e7[_0x5a5f('0x12')]=_0x2b4202;_0x152ba0(null);});});},'updateMd5Password':function(){this[_0x5a5f('0x46')]=md5(this['name']+':asterisk:'+this[_0x5a5f('0x12')]);return this['md5secret'];}}});};