897d1b0eca7ded95ef1fd520e1ff6c47860b12d4
[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 _0xb75c=['priority','defaults','VoiceChanSpy','findAll','internal','exports','models','define','User','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','then','privacyEnabled','updateMd5Password','updatePassword','catch','changed','VoiceExtension','bulkCreate','destroy','concat','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2','indexOf','makeSalt','md5secret','bluebird','crypto','util','lodash','google','length','context','from-sip','system','format','prefix','merge','chanspy','record','push','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','wav','WAV','gsm','Set','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup'];(function(_0x2e5f24,_0x50609c){var _0x3f3d21=function(_0x43f827){while(--_0x43f827){_0x2e5f24['push'](_0x2e5f24['shift']());}};_0x3f3d21(++_0x50609c);}(_0xb75c,0x1ce));var _0xcb75=function(_0x14b7d1,_0x3a8234){_0x14b7d1=_0x14b7d1-0x0;var _0x2d3a07=_0xb75c[_0x14b7d1];return _0x2d3a07;};'use strict';var BPromise=require(_0xcb75('0x0'));var crypto=require(_0xcb75('0x1'));var util=require(_0xcb75('0x2'));var md5=require('md5');var _=require(_0xcb75('0x3'));var attributes=require('./user.attributes');var authTypes=[_0xcb75('0x4')];var validatePresenceOf=function(_0x12aaaa){return _0x12aaaa&&_0x12aaaa[_0xcb75('0x5')];};var getChanSpyApplications=function(_0x4a39a6,_0x2364fd,_0x51e361){var _0x5f488c={'context':_0x4a39a6[_0xcb75('0x6')]||_0xcb75('0x7'),'type':_0xcb75('0x8'),'isApp':![],'UserId':_0x4a39a6['id']};var _0x498656=[];for(var _0x57ef56=0x0,_0x5b89ba=0x1;_0x57ef56<_0x51e361[_0xcb75('0x5')];_0x57ef56++,_0x5b89ba=0x1){var _0xd753e6={'exten':util[_0xcb75('0x9')]('%s%s',_0x51e361[_0x57ef56][_0xcb75('0xa')],_0x2364fd),'ChanSpyId':_0x51e361[_0x57ef56]['id']};_0x498656['push'](_[_0xcb75('0xb')]({'app':'Set','appdata':util[_0xcb75('0x9')]('CDR(type)=%s',_0xcb75('0xc')),'priority':_0x5b89ba++},_0x5f488c,_0xd753e6));if(_0x51e361[_0x57ef56][_0xcb75('0xd')]){_0x498656[_0xcb75('0xe')](_[_0xcb75('0xb')]({'app':'MixMonitor','appdata':util[_0xcb75('0x9')](_0xcb75('0xf'),_0x51e361[_0x57ef56][_0xcb75('0x10')]),'priority':_0x5b89ba++},_0x5f488c,_0xd753e6));}if(_0x51e361[_0x57ef56][_0xcb75('0x11')]){_0x498656[_0xcb75('0xe')](_[_0xcb75('0xb')]({'app':_0xcb75('0x12'),'appdata':_0x51e361[_0x57ef56][_0xcb75('0x13')],'priority':_0x5b89ba++},_0x5f488c,_0xd753e6));}_0x498656['push'](_['merge']({'app':_0xcb75('0x14'),'appdata':util[_0xcb75('0x9')]('SIP/%s,%s',_0x4a39a6[_0xcb75('0x15')],_0x51e361[_0x57ef56][_0xcb75('0x16')]?_0x51e361[_0x57ef56]['options'][_0xcb75('0x17')](''):''),'priority':_0x5b89ba++},_0x5f488c,_0xd753e6));if(_0x51e361[_0x57ef56][_0xcb75('0xd')]){_0x498656[_0xcb75('0xe')](_[_0xcb75('0xb')]({'app':'StopMixMonitor','priority':_0x5b89ba++},_0x5f488c,_0xd753e6));}}return _0x498656;};var getUserApplications=function(_0x10878e,_0x32a66f){var _0x592f6c=[_0xcb75('0x18'),_0xcb75('0x19'),_0xcb75('0x1a')];var _0x39ccd6={'context':_0x10878e['context']||_0xcb75('0x7'),'exten':_0x32a66f,'type':_0xcb75('0x8'),'isApp':![],'UserId':_0x10878e['id']};var _0x14bba7=[{'app':_0xcb75('0x1b'),'appdata':_0xcb75('0x1c')}];if(_0x10878e[_0xcb75('0x1d')]&&_['includes'](_0x592f6c,_0x10878e[_0xcb75('0x1d')])){_0x14bba7['push']({'app':_0xcb75('0x1b'),'appdata':_0xcb75('0x1e')});_0x14bba7['push']({'app':_0xcb75('0x1b'),'appdata':util[_0xcb75('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x10878e[_0xcb75('0x1d')])});_0x14bba7[_0xcb75('0xe')]({'app':_0xcb75('0x1f'),'appdata':util[_0xcb75('0x9')](_0xcb75('0x20'),_0x10878e[_0xcb75('0x15')])});}else{_0x14bba7[_0xcb75('0xe')]({'app':'Dial','appdata':util[_0xcb75('0x9')](_0xcb75('0x21'),_0x10878e['name'])});}_0x14bba7[_0xcb75('0xe')]({'app':_0xcb75('0x22')});for(var _0x118e50=0x0;_0x118e50<_0x14bba7[_0xcb75('0x5')];_0x118e50++){_0x14bba7[_0x118e50][_0xcb75('0x23')]=_0x118e50+0x1;_0x14bba7[_0x118e50]=_[_0xcb75('0x24')](_0x14bba7[_0x118e50],_0x39ccd6);}return _0x14bba7;};var getChanSpyPromise=function(_0xaf2b99,_0x14e356){return new BPromise(function(_0x10950e,_0x54d718){return _0xaf2b99[_0xcb75('0x25')][_0xcb75('0x26')]()['then'](function(_0x153370){if(_0x153370){var _0x1b5c0d=getChanSpyApplications(_0x14e356,_0x14e356[_0xcb75('0x27')],_0x153370);if(_0x14e356[_0xcb75('0x27')]!=_0x14e356[_0xcb75('0x15')]){_0x1b5c0d=_0x1b5c0d['concat'](getChanSpyApplications(_0x14e356,_0x14e356['name'],_0x153370));}return _0x10950e(_0x1b5c0d);}return _0x10950e([]);})['catch'](function(_0x5898da){_0x54d718(_0x5898da);});});};module[_0xcb75('0x28')]=function(_0x5a04fb,_0x319706){var _0x54ae9e=_0x5a04fb[_0xcb75('0x29')];return _0x5a04fb[_0xcb75('0x2a')](_0xcb75('0x2b'),attributes,{'tableName':'users','charset':'utf8','collate':_0xcb75('0x2c'),'hooks':{'beforeCreate':function(_0x14bbd8,_0x217cd,_0x217541){var _0x1f9923=typeof _0x14bbd8[_0xcb75('0x2d')]===_0xcb75('0x2e')?BPromise[_0xcb75('0x2f')](null):_0x54ae9e[_0xcb75('0x30')][_0xcb75('0x31')]({'where':{'id':_0x14bbd8[_0xcb75('0x2d')]}});_0x1f9923[_0xcb75('0x32')](function(_0x5b1517){if(_0x5b1517){_0x14bbd8[_0xcb75('0x33')]=_0x5b1517[_0xcb75('0x33')];}})['then'](function(){_0x14bbd8[_0xcb75('0x34')]();_0x14bbd8[_0xcb75('0x35')](_0x217541);})[_0xcb75('0x36')](function(_0x5eaa77){_0x217541(_0x5eaa77);});},'beforeUpdate':function(_0x4d1338,_0x1e9c72,_0x29a20f){Promise['resolve']()[_0xcb75('0x32')](function(){if(_0x4d1338['changed'](_0xcb75('0x2d'))===![])return;return _0x54ae9e[_0xcb75('0x30')][_0xcb75('0x31')]({'where':{'id':_0x4d1338['userProfileId']}})[_0xcb75('0x32')](function(_0xf23798){if(_0xf23798)_0x4d1338[_0xcb75('0x33')]=_0xf23798[_0xcb75('0x33')];return;});})[_0xcb75('0x32')](function(){if(_0x4d1338[_0xcb75('0x37')](_0xcb75('0x13'))){_0x4d1338[_0xcb75('0x34')]();return _0x4d1338[_0xcb75('0x35')](_0x29a20f);}_0x29a20f();})[_0xcb75('0x36')](function(_0x372903){_0x29a20f(_0x372903);});},'afterCreate':function(_0x4b1dbb,_0x58c441,_0x5c7d2c){var _0x1388e7=getUserApplications(_0x4b1dbb,_0x4b1dbb[_0xcb75('0x27')]);if(_0x4b1dbb[_0xcb75('0x27')]!=_0x4b1dbb[_0xcb75('0x15')]){_0x1388e7=_0x1388e7['concat'](getUserApplications(_0x4b1dbb,_0x4b1dbb[_0xcb75('0x15')]));}return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x39')](_0x1388e7)[_0xcb75('0x32')](function(){if(_0x4b1dbb[_0xcb75('0xc')]){return getChanSpyPromise(_0x54ae9e,_0x4b1dbb);}})['then'](function(_0x31331d){if(_0x31331d&&_0x31331d[_0xcb75('0x5')]){return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x39')](_0x31331d);}})[_0xcb75('0x32')](function(){_0x5c7d2c();})['catch'](function(_0x25e3ed){_0x5c7d2c(_0x25e3ed);});},'afterUpdate':function(_0x117a73,_0x5babec,_0x1bc4c3){return BPromise['resolve']()[_0xcb75('0x32')](function(){if(_0x117a73[_0xcb75('0x37')](_0xcb75('0xc'))||_0x117a73[_0xcb75('0x37')](_0xcb75('0x6'))){return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x3a')]({'where':{'UserId':_0x117a73['id'],'type':_0xcb75('0x8'),'ChanSpyId':{'$ne':null}}})[_0xcb75('0x32')](function(){if(_0x117a73['chanspy']){return getChanSpyPromise(_0x54ae9e,_0x117a73)[_0xcb75('0x32')](function(_0x339273){if(_0x339273&&_0x339273[_0xcb75('0x5')]){return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x39')](_0x339273);}});}});}})[_0xcb75('0x32')](function(){if(_0x117a73[_0xcb75('0x37')](_0xcb75('0x1d'))||_0x117a73[_0xcb75('0x37')](_0xcb75('0x6'))){return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x3a')]({'where':{'UserId':_0x117a73['id'],'type':_0xcb75('0x8'),'ChanSpyId':null}})[_0xcb75('0x32')](function(){var _0x2e3ccc=getUserApplications(_0x117a73,_0x117a73[_0xcb75('0x27')]);if(_0x117a73['internal']!=_0x117a73['name']){_0x2e3ccc=_0x2e3ccc[_0xcb75('0x3b')](getUserApplications(_0x117a73,_0x117a73[_0xcb75('0x15')]));}return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x39')](_0x2e3ccc);});}})['then'](function(){_0x1bc4c3();})[_0xcb75('0x36')](function(_0x3f33db){_0x1bc4c3(_0x3f33db);});},'afterDestroy':function(_0x491b27,_0x132378){return _0x54ae9e[_0xcb75('0x38')][_0xcb75('0x3a')]({'where':{'UserId':_0x491b27['id'],'type':_0xcb75('0x8')}});}},'instanceMethods':{'authenticate':function(_0x16c01a,_0x2e3977){if(!_0x2e3977){return this[_0xcb75('0x13')]===this[_0xcb75('0x3c')](_0x16c01a);}var _0x47fb10=this;this[_0xcb75('0x3c')](_0x16c01a,function(_0x122f3e,_0x4c2c00){if(_0x122f3e){_0x2e3977(_0x122f3e);}if(_0x47fb10[_0xcb75('0x13')]===_0x4c2c00){_0x2e3977(null,!![]);}else{_0x2e3977(null,![]);}});},'makeSalt':function(_0x584110,_0x4a827b){var _0x106f7d=0x10;if(typeof arguments[0x0]===_0xcb75('0x3d')){_0x4a827b=arguments[0x0];_0x584110=_0x106f7d;}else if(typeof arguments[0x1]===_0xcb75('0x3d')){_0x4a827b=arguments[0x1];}else{throw new Error(_0xcb75('0x3e'));}if(!_0x584110){_0x584110=_0x106f7d;}return crypto[_0xcb75('0x3f')](_0x584110,function(_0x30c472,_0x43d201){if(_0x30c472){_0x4a827b(_0x30c472);}return _0x4a827b(null,_0x43d201[_0xcb75('0x40')](_0xcb75('0x41')));});},'encryptPassword':function(_0x69d49a,_0x382925){if(!_0x69d49a||!this[_0xcb75('0x42')]){return _0x382925?_0x382925(null):null;}var _0x1e6ab8=0x2710;var _0x379c39=0x40;var _0xda44f3=new Buffer(this[_0xcb75('0x42')],_0xcb75('0x41'));if(!_0x382925){return crypto['pbkdf2Sync'](_0x69d49a,_0xda44f3,_0x1e6ab8,_0x379c39,'sha1')[_0xcb75('0x40')](_0xcb75('0x41'));}return crypto[_0xcb75('0x43')](_0x69d49a,_0xda44f3,_0x1e6ab8,_0x379c39,'sha1',function(_0x5c19fc,_0x3e4469){if(_0x5c19fc){_0x382925(_0x5c19fc);}return _0x382925(null,_0x3e4469[_0xcb75('0x40')](_0xcb75('0x41')));});},'updatePassword':function(_0x2d9535){if(!this[_0xcb75('0x13')]){return _0x2d9535(null);}if(!validatePresenceOf(this[_0xcb75('0x13')])&&authTypes[_0xcb75('0x44')](this['provider'])===-0x1){_0x2d9535(new Error('Invalid\x20password'));}var _0x5d799d=this;this[_0xcb75('0x45')](function(_0x4ae7c8,_0x5f1c69){if(_0x4ae7c8){return _0x2d9535(_0x4ae7c8);}_0x5d799d['salt']=_0x5f1c69;_0x5d799d[_0xcb75('0x3c')](_0x5d799d[_0xcb75('0x13')],function(_0x2b0199,_0x3cb41f){if(_0x2b0199){_0x2d9535(_0x2b0199);}_0x5d799d[_0xcb75('0x13')]=_0x3cb41f;_0x2d9535(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+':asterisk:'+this[_0xcb75('0x13')]);return this[_0xcb75('0x46')];}}});};