be166ba0dfde59837e2da7c597bac40bd0a8e5ee
[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 _0x4646=['models','define','User','users','utf8_bin','changed','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','then','resolve','system','destroy','encryptPassword','function','Missing\x20Callback','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','md5','lodash','./user.attributes','google','length','context','from-sip','%s%s','merge','Set','format','CDR(type)=%s','chanspy','record','push','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','internal','concat','catch','exports'];(function(_0xc020c7,_0x473420){var _0x115a85=function(_0x43dd31){while(--_0x43dd31){_0xc020c7['push'](_0xc020c7['shift']());}};_0x115a85(++_0x473420);}(_0x4646,0x174));var _0x6464=function(_0x557c2b,_0x401d2e){_0x557c2b=_0x557c2b-0x0;var _0x5d46d6=_0x4646[_0x557c2b];return _0x5d46d6;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x6464('0x0'));var util=require('util');var md5=require(_0x6464('0x1'));var _=require(_0x6464('0x2'));var attributes=require(_0x6464('0x3'));var authTypes=[_0x6464('0x4')];var validatePresenceOf=function(_0x36ae0b){return _0x36ae0b&&_0x36ae0b[_0x6464('0x5')];};var getChanSpyApplications=function(_0x1fd7ca,_0x274cdb,_0x42b728){var _0x574fd2={'context':_0x1fd7ca[_0x6464('0x6')]||_0x6464('0x7'),'type':'system','isApp':![],'UserId':_0x1fd7ca['id']};var _0x53a682=[];for(var _0x276d00=0x0,_0x106e6b=0x1;_0x276d00<_0x42b728[_0x6464('0x5')];_0x276d00++,_0x106e6b=0x1){var _0x26f2e5={'exten':util['format'](_0x6464('0x8'),_0x42b728[_0x276d00]['prefix'],_0x274cdb),'ChanSpyId':_0x42b728[_0x276d00]['id']};_0x53a682['push'](_[_0x6464('0x9')]({'app':_0x6464('0xa'),'appdata':util[_0x6464('0xb')](_0x6464('0xc'),_0x6464('0xd')),'priority':_0x106e6b++},_0x574fd2,_0x26f2e5));if(_0x42b728[_0x276d00][_0x6464('0xe')]){_0x53a682[_0x6464('0xf')](_[_0x6464('0x9')]({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,a',_0x42b728[_0x276d00][_0x6464('0x10')]),'priority':_0x106e6b++},_0x574fd2,_0x26f2e5));}if(_0x42b728[_0x276d00][_0x6464('0x11')]){_0x53a682[_0x6464('0xf')](_[_0x6464('0x9')]({'app':_0x6464('0x12'),'appdata':_0x42b728[_0x276d00][_0x6464('0x13')],'priority':_0x106e6b++},_0x574fd2,_0x26f2e5));}_0x53a682[_0x6464('0xf')](_[_0x6464('0x9')]({'app':_0x6464('0x14'),'appdata':util['format'](_0x6464('0x15'),_0x1fd7ca[_0x6464('0x16')],_0x42b728[_0x276d00][_0x6464('0x17')]?_0x42b728[_0x276d00]['options'][_0x6464('0x18')](''):''),'priority':_0x106e6b++},_0x574fd2,_0x26f2e5));if(_0x42b728[_0x276d00][_0x6464('0xe')]){_0x53a682[_0x6464('0xf')](_[_0x6464('0x9')]({'app':_0x6464('0x19'),'priority':_0x106e6b++},_0x574fd2,_0x26f2e5));}}return _0x53a682;};var getUserApplications=function(_0x2b4802,_0x312b7a){var _0x25df62=[_0x6464('0x1a'),_0x6464('0x1b'),'gsm'];var _0xc65d87={'context':_0x2b4802['context']||'from-sip','exten':_0x312b7a,'type':'system','isApp':![],'UserId':_0x2b4802['id']};var _0x4ba5b9=[{'app':'Set','appdata':_0x6464('0x1c')}];if(_0x2b4802[_0x6464('0x1d')]&&_[_0x6464('0x1e')](_0x25df62,_0x2b4802[_0x6464('0x1d')])){_0x4ba5b9[_0x6464('0xf')]({'app':_0x6464('0xa'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x4ba5b9[_0x6464('0xf')]({'app':'Set','appdata':util['format'](_0x6464('0x1f'),_0x2b4802[_0x6464('0x1d')])});_0x4ba5b9['push']({'app':'Dial','appdata':util[_0x6464('0xb')](_0x6464('0x20'),_0x2b4802[_0x6464('0x16')])});}else{_0x4ba5b9[_0x6464('0xf')]({'app':'Dial','appdata':util[_0x6464('0xb')](_0x6464('0x21'),_0x2b4802[_0x6464('0x16')])});}_0x4ba5b9[_0x6464('0xf')]({'app':'Hangup'});for(var _0x4c2460=0x0;_0x4c2460<_0x4ba5b9[_0x6464('0x5')];_0x4c2460++){_0x4ba5b9[_0x4c2460][_0x6464('0x22')]=_0x4c2460+0x1;_0x4ba5b9[_0x4c2460]=_[_0x6464('0x23')](_0x4ba5b9[_0x4c2460],_0xc65d87);}return _0x4ba5b9;};var getChanSpyPromise=function(_0x4af9e9,_0x2f39ff){return new BPromise(function(_0x4bfe58,_0x391c7b){return _0x4af9e9[_0x6464('0x24')][_0x6464('0x25')]()['then'](function(_0x2424d3){if(_0x2424d3){var _0x3c2d23=getChanSpyApplications(_0x2f39ff,_0x2f39ff[_0x6464('0x26')],_0x2424d3);if(_0x2f39ff[_0x6464('0x26')]!=_0x2f39ff[_0x6464('0x16')]){_0x3c2d23=_0x3c2d23[_0x6464('0x27')](getChanSpyApplications(_0x2f39ff,_0x2f39ff[_0x6464('0x16')],_0x2424d3));}return _0x4bfe58(_0x3c2d23);}return _0x4bfe58([]);})[_0x6464('0x28')](function(_0x27d6e2){_0x391c7b(_0x27d6e2);});});};module[_0x6464('0x29')]=function(_0x573609,_0x147fbc){var _0x4aa135=_0x573609[_0x6464('0x2a')];return _0x573609[_0x6464('0x2b')](_0x6464('0x2c'),attributes,{'tableName':_0x6464('0x2d'),'charset':'utf8','collate':_0x6464('0x2e'),'hooks':{'beforeCreate':function(_0x7677d8,_0x51f136,_0x591096){_0x7677d8['updateMd5Password']();_0x7677d8['updatePassword'](_0x591096);},'beforeUpdate':function(_0x471e33,_0x54e407,_0x23cc2d){if(_0x471e33[_0x6464('0x2f')](_0x6464('0x13'))){_0x471e33[_0x6464('0x30')]();return _0x471e33[_0x6464('0x31')](_0x23cc2d);}_0x23cc2d();},'afterCreate':function(_0x2f49c5,_0x9d4e8a,_0x3581bb){var _0x489322=getUserApplications(_0x2f49c5,_0x2f49c5[_0x6464('0x26')]);if(_0x2f49c5['internal']!=_0x2f49c5[_0x6464('0x16')]){_0x489322=_0x489322['concat'](getUserApplications(_0x2f49c5,_0x2f49c5['name']));}return _0x4aa135[_0x6464('0x32')][_0x6464('0x33')](_0x489322)['then'](function(){if(_0x2f49c5[_0x6464('0xd')]){return getChanSpyPromise(_0x4aa135,_0x2f49c5);}})['then'](function(_0x26397c){if(_0x26397c&&_0x26397c[_0x6464('0x5')]){return _0x4aa135[_0x6464('0x32')][_0x6464('0x33')](_0x26397c);}})[_0x6464('0x34')](function(){_0x3581bb();})[_0x6464('0x28')](function(_0x190677){_0x3581bb(_0x190677);});},'afterUpdate':function(_0x1b2af5,_0x2d31a4,_0xad7823){return BPromise[_0x6464('0x35')]()[_0x6464('0x34')](function(){if(_0x1b2af5['changed']('chanspy')||_0x1b2af5[_0x6464('0x2f')](_0x6464('0x6'))){return _0x4aa135['VoiceExtension']['destroy']({'where':{'UserId':_0x1b2af5['id'],'type':_0x6464('0x36'),'ChanSpyId':{'$ne':null}}})[_0x6464('0x34')](function(){if(_0x1b2af5[_0x6464('0xd')]){return getChanSpyPromise(_0x4aa135,_0x1b2af5)[_0x6464('0x34')](function(_0x5c920e){if(_0x5c920e&&_0x5c920e[_0x6464('0x5')]){return _0x4aa135[_0x6464('0x32')][_0x6464('0x33')](_0x5c920e);}});}});}})[_0x6464('0x34')](function(){if(_0x1b2af5['changed'](_0x6464('0x1d'))||_0x1b2af5[_0x6464('0x2f')](_0x6464('0x6'))){return _0x4aa135[_0x6464('0x32')][_0x6464('0x37')]({'where':{'UserId':_0x1b2af5['id'],'type':_0x6464('0x36'),'ChanSpyId':null}})['then'](function(){var _0x5a0752=getUserApplications(_0x1b2af5,_0x1b2af5[_0x6464('0x26')]);if(_0x1b2af5[_0x6464('0x26')]!=_0x1b2af5['name']){_0x5a0752=_0x5a0752[_0x6464('0x27')](getUserApplications(_0x1b2af5,_0x1b2af5['name']));}return _0x4aa135[_0x6464('0x32')]['bulkCreate'](_0x5a0752);});}})['then'](function(){_0xad7823();})['catch'](function(_0x535290){_0xad7823(_0x535290);});},'afterDestroy':function(_0x238926,_0x5cfa15){return _0x4aa135[_0x6464('0x32')][_0x6464('0x37')]({'where':{'UserId':_0x238926['id'],'type':_0x6464('0x36')}});}},'instanceMethods':{'authenticate':function(_0xf5ecf4,_0x100ce5){if(!_0x100ce5){return this['password']===this[_0x6464('0x38')](_0xf5ecf4);}var _0x2574f4=this;this[_0x6464('0x38')](_0xf5ecf4,function(_0x1a9d9e,_0x2fe375){if(_0x1a9d9e){_0x100ce5(_0x1a9d9e);}if(_0x2574f4[_0x6464('0x13')]===_0x2fe375){_0x100ce5(null,!![]);}else{_0x100ce5(null,![]);}});},'makeSalt':function(_0xa04c62,_0x5ddb5f){var _0xe6f8ce=0x10;if(typeof arguments[0x0]===_0x6464('0x39')){_0x5ddb5f=arguments[0x0];_0xa04c62=_0xe6f8ce;}else if(typeof arguments[0x1]===_0x6464('0x39')){_0x5ddb5f=arguments[0x1];}else{throw new Error(_0x6464('0x3a'));}if(!_0xa04c62){_0xa04c62=_0xe6f8ce;}return crypto['randomBytes'](_0xa04c62,function(_0x395910,_0x5e9cf6){if(_0x395910){_0x5ddb5f(_0x395910);}return _0x5ddb5f(null,_0x5e9cf6['toString'](_0x6464('0x3b')));});},'encryptPassword':function(_0x21da14,_0x37dfe1){if(!_0x21da14||!this[_0x6464('0x3c')]){return _0x37dfe1?_0x37dfe1(null):null;}var _0x163322=0x2710;var _0x205ed8=0x40;var _0x1b45b2=new Buffer(this[_0x6464('0x3c')],_0x6464('0x3b'));if(!_0x37dfe1){return crypto[_0x6464('0x3d')](_0x21da14,_0x1b45b2,_0x163322,_0x205ed8,_0x6464('0x3e'))[_0x6464('0x3f')]('base64');}return crypto[_0x6464('0x40')](_0x21da14,_0x1b45b2,_0x163322,_0x205ed8,_0x6464('0x3e'),function(_0x5c3f1f,_0x9fa1e4){if(_0x5c3f1f){_0x37dfe1(_0x5c3f1f);}return _0x37dfe1(null,_0x9fa1e4[_0x6464('0x3f')](_0x6464('0x3b')));});},'updatePassword':function(_0x219856){if(!this[_0x6464('0x13')]){return _0x219856(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this['provider'])===-0x1){_0x219856(new Error(_0x6464('0x41')));}var _0x3ac800=this;this[_0x6464('0x42')](function(_0x5baf6b,_0x3a9916){if(_0x5baf6b){return _0x219856(_0x5baf6b);}_0x3ac800[_0x6464('0x3c')]=_0x3a9916;_0x3ac800[_0x6464('0x38')](_0x3ac800[_0x6464('0x13')],function(_0x106116,_0xf6d262){if(_0x106116){_0x219856(_0x106116);}_0x3ac800[_0x6464('0x13')]=_0xf6d262;_0x219856(null);});});},'updateMd5Password':function(){this[_0x6464('0x43')]=md5(this[_0x6464('0x16')]+_0x6464('0x44')+this[_0x6464('0x13')]);return this['md5secret'];}}});};