Built motion from commit d9028345.|2.5.43
[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 _0xc538=['SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','length','priority','VoiceChanSpy','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','destroy','encryptPassword','function','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','md5','./user.attributes','google','context','from-sip','system','format','%s%s','prefix','push','Set','chanspy','record','merge','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial'];(function(_0x23546d,_0x9b5c4a){var _0x1f6b2c=function(_0x162970){while(--_0x162970){_0x23546d['push'](_0x23546d['shift']());}};_0x1f6b2c(++_0x9b5c4a);}(_0xc538,0x15b));var _0x8c53=function(_0x2053ea,_0x1ab2d4){_0x2053ea=_0x2053ea-0x0;var _0x2232c4=_0xc538[_0x2053ea];return _0x2232c4;};'use strict';var BPromise=require(_0x8c53('0x0'));var crypto=require('crypto');var util=require('util');var md5=require(_0x8c53('0x1'));var _=require('lodash');var attributes=require(_0x8c53('0x2'));var authTypes=[_0x8c53('0x3')];var validatePresenceOf=function(_0x39b9a9){return _0x39b9a9&&_0x39b9a9['length'];};var getChanSpyApplications=function(_0x5dc2eb,_0xe60302,_0x8b474){var _0x5476a0={'context':_0x5dc2eb[_0x8c53('0x4')]||_0x8c53('0x5'),'type':_0x8c53('0x6'),'isApp':![],'UserId':_0x5dc2eb['id']};var _0x520a06=[];for(var _0x405639=0x0,_0xc9692b=0x1;_0x405639<_0x8b474['length'];_0x405639++,_0xc9692b=0x1){var _0x486ceb={'exten':util[_0x8c53('0x7')](_0x8c53('0x8'),_0x8b474[_0x405639][_0x8c53('0x9')],_0xe60302),'ChanSpyId':_0x8b474[_0x405639]['id']};_0x520a06[_0x8c53('0xa')](_['merge']({'app':_0x8c53('0xb'),'appdata':util[_0x8c53('0x7')]('CDR(type)=%s',_0x8c53('0xc')),'priority':_0xc9692b++},_0x5476a0,_0x486ceb));if(_0x8b474[_0x405639][_0x8c53('0xd')]){_0x520a06['push'](_[_0x8c53('0xe')]({'app':_0x8c53('0xf'),'appdata':util[_0x8c53('0x7')]('${UNIQUEID}.%s,a',_0x8b474[_0x405639][_0x8c53('0x10')]),'priority':_0xc9692b++},_0x5476a0,_0x486ceb));}if(_0x8b474[_0x405639][_0x8c53('0x11')]){_0x520a06[_0x8c53('0xa')](_[_0x8c53('0xe')]({'app':_0x8c53('0x12'),'appdata':_0x8b474[_0x405639][_0x8c53('0x13')],'priority':_0xc9692b++},_0x5476a0,_0x486ceb));}_0x520a06[_0x8c53('0xa')](_[_0x8c53('0xe')]({'app':_0x8c53('0x14'),'appdata':util[_0x8c53('0x7')](_0x8c53('0x15'),_0x5dc2eb[_0x8c53('0x16')],_0x8b474[_0x405639][_0x8c53('0x17')]?_0x8b474[_0x405639][_0x8c53('0x17')][_0x8c53('0x18')](''):''),'priority':_0xc9692b++},_0x5476a0,_0x486ceb));if(_0x8b474[_0x405639][_0x8c53('0xd')]){_0x520a06[_0x8c53('0xa')](_[_0x8c53('0xe')]({'app':_0x8c53('0x19'),'priority':_0xc9692b++},_0x5476a0,_0x486ceb));}}return _0x520a06;};var getUserApplications=function(_0x5588b6,_0x163702){var _0x37a71c=[_0x8c53('0x1a'),'WAV',_0x8c53('0x1b')];var _0xb6ce41={'context':_0x5588b6[_0x8c53('0x4')]||_0x8c53('0x5'),'exten':_0x163702,'type':'system','isApp':![],'UserId':_0x5588b6['id']};var _0x35c800=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x5588b6['extensionMonitor']&&_[_0x8c53('0x1c')](_0x37a71c,_0x5588b6[_0x8c53('0x1d')])){_0x35c800[_0x8c53('0xa')]({'app':_0x8c53('0xb'),'appdata':_0x8c53('0x1e')});_0x35c800[_0x8c53('0xa')]({'app':_0x8c53('0xb'),'appdata':util['format'](_0x8c53('0x1f'),_0x5588b6[_0x8c53('0x1d')])});_0x35c800['push']({'app':_0x8c53('0x20'),'appdata':util['format'](_0x8c53('0x21'),_0x5588b6[_0x8c53('0x16')])});}else{_0x35c800[_0x8c53('0xa')]({'app':_0x8c53('0x20'),'appdata':util[_0x8c53('0x7')](_0x8c53('0x22'),_0x5588b6[_0x8c53('0x16')])});}_0x35c800[_0x8c53('0xa')]({'app':_0x8c53('0x23')});for(var _0x57b1c1=0x0;_0x57b1c1<_0x35c800[_0x8c53('0x24')];_0x57b1c1++){_0x35c800[_0x57b1c1][_0x8c53('0x25')]=_0x57b1c1+0x1;_0x35c800[_0x57b1c1]=_['defaults'](_0x35c800[_0x57b1c1],_0xb6ce41);}return _0x35c800;};var getChanSpyPromise=function(_0x3f982c,_0x31528f){return new BPromise(function(_0x10efe8,_0x5eb3e2){return _0x3f982c[_0x8c53('0x26')]['findAll']()[_0x8c53('0x27')](function(_0x3956d1){if(_0x3956d1){var _0x35258f=getChanSpyApplications(_0x31528f,_0x31528f[_0x8c53('0x28')],_0x3956d1);if(_0x31528f[_0x8c53('0x28')]!=_0x31528f[_0x8c53('0x16')]){_0x35258f=_0x35258f[_0x8c53('0x29')](getChanSpyApplications(_0x31528f,_0x31528f[_0x8c53('0x16')],_0x3956d1));}return _0x10efe8(_0x35258f);}return _0x10efe8([]);})[_0x8c53('0x2a')](function(_0x33dc30){_0x5eb3e2(_0x33dc30);});});};module[_0x8c53('0x2b')]=function(_0x1656ca,_0x382bdd){var _0x44020b=_0x1656ca[_0x8c53('0x2c')];return _0x1656ca[_0x8c53('0x2d')](_0x8c53('0x2e'),attributes,{'tableName':_0x8c53('0x2f'),'charset':_0x8c53('0x30'),'collate':_0x8c53('0x31'),'hooks':{'beforeCreate':function(_0x503f95,_0x4580e4,_0x599fe8){var _0x452ba6=typeof _0x503f95[_0x8c53('0x32')]===_0x8c53('0x33')?BPromise[_0x8c53('0x34')](null):_0x44020b[_0x8c53('0x35')][_0x8c53('0x36')]({'where':{'id':_0x503f95['userProfileId']}});_0x452ba6[_0x8c53('0x27')](function(_0x46b2dd){if(_0x46b2dd){_0x503f95[_0x8c53('0x37')]=_0x46b2dd[_0x8c53('0x37')];}})['then'](function(){_0x503f95[_0x8c53('0x38')]();_0x503f95[_0x8c53('0x39')](_0x599fe8);})[_0x8c53('0x2a')](function(_0x5e4ff6){_0x599fe8(_0x5e4ff6);});},'beforeUpdate':function(_0x3d8aa1,_0x45a995,_0x822114){Promise[_0x8c53('0x34')]()[_0x8c53('0x27')](function(){if(_0x3d8aa1[_0x8c53('0x3a')](_0x8c53('0x32'))===![])return;return _0x44020b['UserProfile'][_0x8c53('0x36')]({'where':{'id':_0x3d8aa1[_0x8c53('0x32')]}})[_0x8c53('0x27')](function(_0x3fd04b){if(_0x3fd04b)_0x3d8aa1['privacyEnabled']=_0x3fd04b['privacyEnabled'];return;});})['then'](function(){if(_0x3d8aa1[_0x8c53('0x3a')](_0x8c53('0x13'))){_0x3d8aa1['updateMd5Password']();return _0x3d8aa1[_0x8c53('0x39')](_0x822114);}_0x822114();})[_0x8c53('0x2a')](function(_0x40e5fc){_0x822114(_0x40e5fc);});},'afterCreate':function(_0x278e63,_0x306127,_0x363a0e){var _0x3d95e5=getUserApplications(_0x278e63,_0x278e63[_0x8c53('0x28')]);if(_0x278e63[_0x8c53('0x28')]!=_0x278e63[_0x8c53('0x16')]){_0x3d95e5=_0x3d95e5[_0x8c53('0x29')](getUserApplications(_0x278e63,_0x278e63['name']));}return _0x44020b[_0x8c53('0x3b')][_0x8c53('0x3c')](_0x3d95e5)[_0x8c53('0x27')](function(){if(_0x278e63[_0x8c53('0xc')]){return getChanSpyPromise(_0x44020b,_0x278e63);}})['then'](function(_0x66d815){if(_0x66d815&&_0x66d815[_0x8c53('0x24')]){return _0x44020b['VoiceExtension'][_0x8c53('0x3c')](_0x66d815);}})[_0x8c53('0x27')](function(){_0x363a0e();})['catch'](function(_0xfdea2){_0x363a0e(_0xfdea2);});},'afterUpdate':function(_0x2a5b6c,_0x236b3c,_0x4bf951){return BPromise['resolve']()[_0x8c53('0x27')](function(){if(_0x2a5b6c['changed'](_0x8c53('0xc'))||_0x2a5b6c[_0x8c53('0x3a')]('context')){return _0x44020b[_0x8c53('0x3b')]['destroy']({'where':{'UserId':_0x2a5b6c['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x8c53('0x27')](function(){if(_0x2a5b6c[_0x8c53('0xc')]){return getChanSpyPromise(_0x44020b,_0x2a5b6c)[_0x8c53('0x27')](function(_0x53a4b1){if(_0x53a4b1&&_0x53a4b1[_0x8c53('0x24')]){return _0x44020b[_0x8c53('0x3b')][_0x8c53('0x3c')](_0x53a4b1);}});}});}})[_0x8c53('0x27')](function(){if(_0x2a5b6c['changed'](_0x8c53('0x1d'))||_0x2a5b6c[_0x8c53('0x3a')](_0x8c53('0x4'))){return _0x44020b[_0x8c53('0x3b')]['destroy']({'where':{'UserId':_0x2a5b6c['id'],'type':'system','ChanSpyId':null}})[_0x8c53('0x27')](function(){var _0x177f73=getUserApplications(_0x2a5b6c,_0x2a5b6c[_0x8c53('0x28')]);if(_0x2a5b6c[_0x8c53('0x28')]!=_0x2a5b6c[_0x8c53('0x16')]){_0x177f73=_0x177f73['concat'](getUserApplications(_0x2a5b6c,_0x2a5b6c[_0x8c53('0x16')]));}return _0x44020b[_0x8c53('0x3b')][_0x8c53('0x3c')](_0x177f73);});}})[_0x8c53('0x27')](function(){_0x4bf951();})[_0x8c53('0x2a')](function(_0x2bf671){_0x4bf951(_0x2bf671);});},'afterDestroy':function(_0x37f93b,_0x17745c){return _0x44020b['VoiceExtension'][_0x8c53('0x3d')]({'where':{'UserId':_0x37f93b['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x2d0658,_0x1fe50b){if(!_0x1fe50b){return this[_0x8c53('0x13')]===this[_0x8c53('0x3e')](_0x2d0658);}var _0x371dbb=this;this[_0x8c53('0x3e')](_0x2d0658,function(_0x2932d3,_0x7bf364){if(_0x2932d3){_0x1fe50b(_0x2932d3);}if(_0x371dbb[_0x8c53('0x13')]===_0x7bf364){_0x1fe50b(null,!![]);}else{_0x1fe50b(null,![]);}});},'makeSalt':function(_0x17e731,_0xb2c8c5){var _0x3813b9=0x10;if(typeof arguments[0x0]===_0x8c53('0x3f')){_0xb2c8c5=arguments[0x0];_0x17e731=_0x3813b9;}else if(typeof arguments[0x1]===_0x8c53('0x3f')){_0xb2c8c5=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x17e731){_0x17e731=_0x3813b9;}return crypto['randomBytes'](_0x17e731,function(_0x1e84b7,_0x5de316){if(_0x1e84b7){_0xb2c8c5(_0x1e84b7);}return _0xb2c8c5(null,_0x5de316['toString'](_0x8c53('0x40')));});},'encryptPassword':function(_0x2a6d5d,_0x58e309){if(!_0x2a6d5d||!this[_0x8c53('0x41')]){return _0x58e309?_0x58e309(null):null;}var _0x28a001=0x2710;var _0x68367d=0x40;var _0x2f1817=new Buffer(this[_0x8c53('0x41')],'base64');if(!_0x58e309){return crypto[_0x8c53('0x42')](_0x2a6d5d,_0x2f1817,_0x28a001,_0x68367d,_0x8c53('0x43'))[_0x8c53('0x44')](_0x8c53('0x40'));}return crypto[_0x8c53('0x45')](_0x2a6d5d,_0x2f1817,_0x28a001,_0x68367d,'sha1',function(_0x429d68,_0x25ca48){if(_0x429d68){_0x58e309(_0x429d68);}return _0x58e309(null,_0x25ca48[_0x8c53('0x44')](_0x8c53('0x40')));});},'updatePassword':function(_0x279b45){if(!this['password']){return _0x279b45(null);}if(!validatePresenceOf(this[_0x8c53('0x13')])&&authTypes[_0x8c53('0x46')](this[_0x8c53('0x47')])===-0x1){_0x279b45(new Error(_0x8c53('0x48')));}var _0x507351=this;this[_0x8c53('0x49')](function(_0x4258bd,_0x3ca311){if(_0x4258bd){return _0x279b45(_0x4258bd);}_0x507351[_0x8c53('0x41')]=_0x3ca311;_0x507351['encryptPassword'](_0x507351[_0x8c53('0x13')],function(_0xca542b,_0x123e33){if(_0xca542b){_0x279b45(_0xca542b);}_0x507351['password']=_0x123e33;_0x279b45(null);});});},'updateMd5Password':function(){this[_0x8c53('0x4a')]=md5(this[_0x8c53('0x16')]+_0x8c53('0x4b')+this[_0x8c53('0x13')]);return this[_0x8c53('0x4a')];}}});};