Built motion from commit (unavailable).|2.5.6
[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 _0x69e0=['salt','pbkdf2Sync','pbkdf2','sha1','provider','makeSalt',':asterisk:','crypto','util','md5','lodash','./user.attributes','length','from-sip','system','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','context','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','name','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','updatePassword','changed','password','updateMd5Password','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x69e0,0x1c3));var _0x069e=function(_0x34d11c,_0x25371e){_0x34d11c=_0x34d11c-0x0;var _0xec43fc=_0x69e0[_0x34d11c];return _0xec43fc;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x069e('0x0'));var util=require(_0x069e('0x1'));var md5=require(_0x069e('0x2'));var _=require(_0x069e('0x3'));var attributes=require(_0x069e('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x2a8793){return _0x2a8793&&_0x2a8793[_0x069e('0x5')];};var getChanSpyApplications=function(_0x247f73,_0x41b6b5,_0x6c290c){var _0x37439c={'context':_0x247f73['context']||_0x069e('0x6'),'type':_0x069e('0x7'),'isApp':![],'UserId':_0x247f73['id']};var _0x1e6390=[];for(var _0x16a6bd=0x0,_0x5c2a22=0x1;_0x16a6bd<_0x6c290c[_0x069e('0x5')];_0x16a6bd++,_0x5c2a22=0x1){var _0xca3d4e={'exten':util[_0x069e('0x8')](_0x069e('0x9'),_0x6c290c[_0x16a6bd]['prefix'],_0x41b6b5),'ChanSpyId':_0x6c290c[_0x16a6bd]['id']};_0x1e6390[_0x069e('0xa')](_[_0x069e('0xb')]({'app':_0x069e('0xc'),'appdata':util[_0x069e('0x8')](_0x069e('0xd'),_0x069e('0xe')),'priority':_0x5c2a22++},_0x37439c,_0xca3d4e));if(_0x6c290c[_0x16a6bd][_0x069e('0xf')]){_0x1e6390[_0x069e('0xa')](_[_0x069e('0xb')]({'app':_0x069e('0x10'),'appdata':util[_0x069e('0x8')](_0x069e('0x11'),_0x6c290c[_0x16a6bd]['recordingFormat']),'priority':_0x5c2a22++},_0x37439c,_0xca3d4e));}if(_0x6c290c[_0x16a6bd][_0x069e('0x12')]){_0x1e6390[_0x069e('0xa')](_[_0x069e('0xb')]({'app':_0x069e('0x13'),'appdata':_0x6c290c[_0x16a6bd]['password'],'priority':_0x5c2a22++},_0x37439c,_0xca3d4e));}_0x1e6390[_0x069e('0xa')](_[_0x069e('0xb')]({'app':_0x069e('0x14'),'appdata':util[_0x069e('0x8')](_0x069e('0x15'),_0x247f73['name'],_0x6c290c[_0x16a6bd][_0x069e('0x16')]?_0x6c290c[_0x16a6bd][_0x069e('0x16')][_0x069e('0x17')](''):''),'priority':_0x5c2a22++},_0x37439c,_0xca3d4e));if(_0x6c290c[_0x16a6bd][_0x069e('0xf')]){_0x1e6390[_0x069e('0xa')](_[_0x069e('0xb')]({'app':_0x069e('0x18'),'priority':_0x5c2a22++},_0x37439c,_0xca3d4e));}}return _0x1e6390;};var getUserApplications=function(_0x1de19d,_0x4ba643){var _0x39de06=[_0x069e('0x19'),_0x069e('0x1a'),_0x069e('0x1b')];var _0x38bb00={'context':_0x1de19d[_0x069e('0x1c')]||_0x069e('0x6'),'exten':_0x4ba643,'type':_0x069e('0x7'),'isApp':![],'UserId':_0x1de19d['id']};var _0x3dd2b1=[{'app':_0x069e('0xc'),'appdata':_0x069e('0x1d')}];if(_0x1de19d[_0x069e('0x1e')]&&_[_0x069e('0x1f')](_0x39de06,_0x1de19d[_0x069e('0x1e')])){_0x3dd2b1[_0x069e('0xa')]({'app':'Set','appdata':_0x069e('0x20')});_0x3dd2b1[_0x069e('0xa')]({'app':_0x069e('0xc'),'appdata':util[_0x069e('0x8')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x1de19d[_0x069e('0x1e')])});_0x3dd2b1['push']({'app':_0x069e('0x21'),'appdata':util[_0x069e('0x8')](_0x069e('0x22'),_0x1de19d['name'])});}else{_0x3dd2b1[_0x069e('0xa')]({'app':_0x069e('0x21'),'appdata':util[_0x069e('0x8')](_0x069e('0x23'),_0x1de19d[_0x069e('0x24')])});}_0x3dd2b1[_0x069e('0xa')]({'app':_0x069e('0x25')});for(var _0x5b308c=0x0;_0x5b308c<_0x3dd2b1[_0x069e('0x5')];_0x5b308c++){_0x3dd2b1[_0x5b308c][_0x069e('0x26')]=_0x5b308c+0x1;_0x3dd2b1[_0x5b308c]=_[_0x069e('0x27')](_0x3dd2b1[_0x5b308c],_0x38bb00);}return _0x3dd2b1;};var getChanSpyPromise=function(_0x2a8449,_0x21b73d){return new BPromise(function(_0x1b9594,_0x5f5269){return _0x2a8449[_0x069e('0x28')][_0x069e('0x29')]()[_0x069e('0x2a')](function(_0x3eda45){if(_0x3eda45){var _0x7adeb2=getChanSpyApplications(_0x21b73d,_0x21b73d[_0x069e('0x2b')],_0x3eda45);if(_0x21b73d['internal']!=_0x21b73d[_0x069e('0x24')]){_0x7adeb2=_0x7adeb2[_0x069e('0x2c')](getChanSpyApplications(_0x21b73d,_0x21b73d[_0x069e('0x24')],_0x3eda45));}return _0x1b9594(_0x7adeb2);}return _0x1b9594([]);})[_0x069e('0x2d')](function(_0x59b245){_0x5f5269(_0x59b245);});});};module[_0x069e('0x2e')]=function(_0x298d0a,_0x1bb8e0){var _0x1f611b=_0x298d0a[_0x069e('0x2f')];return _0x298d0a[_0x069e('0x30')](_0x069e('0x31'),attributes,{'tableName':_0x069e('0x32'),'charset':_0x069e('0x33'),'collate':_0x069e('0x34'),'hooks':{'beforeCreate':function(_0x43cc41,_0x360185,_0x22e242){_0x43cc41['updateMd5Password']();_0x43cc41[_0x069e('0x35')](_0x22e242);},'beforeUpdate':function(_0x56f811,_0x8714c9,_0x101c20){if(_0x56f811[_0x069e('0x36')](_0x069e('0x37'))){_0x56f811[_0x069e('0x38')]();return _0x56f811[_0x069e('0x35')](_0x101c20);}_0x101c20();},'afterCreate':function(_0x52c0cf,_0x5431c0,_0x5ec5fd){var _0x405ad2=getUserApplications(_0x52c0cf,_0x52c0cf[_0x069e('0x2b')]);if(_0x52c0cf['internal']!=_0x52c0cf[_0x069e('0x24')]){_0x405ad2=_0x405ad2[_0x069e('0x2c')](getUserApplications(_0x52c0cf,_0x52c0cf[_0x069e('0x24')]));}return _0x1f611b[_0x069e('0x39')][_0x069e('0x3a')](_0x405ad2)[_0x069e('0x2a')](function(){if(_0x52c0cf['chanspy']){return getChanSpyPromise(_0x1f611b,_0x52c0cf);}})[_0x069e('0x2a')](function(_0x1f6749){if(_0x1f6749&&_0x1f6749[_0x069e('0x5')]){return _0x1f611b[_0x069e('0x39')][_0x069e('0x3a')](_0x1f6749);}})[_0x069e('0x2a')](function(){_0x5ec5fd();})[_0x069e('0x2d')](function(_0x4a7450){_0x5ec5fd(_0x4a7450);});},'afterUpdate':function(_0x2c4afb,_0x240019,_0xf25daa){return BPromise[_0x069e('0x3b')]()[_0x069e('0x2a')](function(){if(_0x2c4afb[_0x069e('0x36')](_0x069e('0xe'))||_0x2c4afb['changed']('context')){return _0x1f611b[_0x069e('0x39')][_0x069e('0x3c')]({'where':{'UserId':_0x2c4afb['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x069e('0x2a')](function(){if(_0x2c4afb['chanspy']){return getChanSpyPromise(_0x1f611b,_0x2c4afb)['then'](function(_0x31f8eb){if(_0x31f8eb&&_0x31f8eb[_0x069e('0x5')]){return _0x1f611b['VoiceExtension'][_0x069e('0x3a')](_0x31f8eb);}});}});}})['then'](function(){if(_0x2c4afb['changed'](_0x069e('0x1e'))||_0x2c4afb[_0x069e('0x36')](_0x069e('0x1c'))){return _0x1f611b['VoiceExtension'][_0x069e('0x3c')]({'where':{'UserId':_0x2c4afb['id'],'type':_0x069e('0x7'),'ChanSpyId':null}})[_0x069e('0x2a')](function(){var _0x1190fa=getUserApplications(_0x2c4afb,_0x2c4afb[_0x069e('0x2b')]);if(_0x2c4afb[_0x069e('0x2b')]!=_0x2c4afb[_0x069e('0x24')]){_0x1190fa=_0x1190fa[_0x069e('0x2c')](getUserApplications(_0x2c4afb,_0x2c4afb[_0x069e('0x24')]));}return _0x1f611b['VoiceExtension'][_0x069e('0x3a')](_0x1190fa);});}})[_0x069e('0x2a')](function(){_0xf25daa();})[_0x069e('0x2d')](function(_0x1f428b){_0xf25daa(_0x1f428b);});},'afterDestroy':function(_0x175653,_0x2a9032){return _0x1f611b[_0x069e('0x39')][_0x069e('0x3c')]({'where':{'UserId':_0x175653['id'],'type':_0x069e('0x7')}});}},'instanceMethods':{'authenticate':function(_0x4a80f4,_0xa40546){if(!_0xa40546){return this[_0x069e('0x37')]===this['encryptPassword'](_0x4a80f4);}var _0x17ada1=this;this[_0x069e('0x3d')](_0x4a80f4,function(_0x118c69,_0x1f23be){if(_0x118c69){_0xa40546(_0x118c69);}if(_0x17ada1[_0x069e('0x37')]===_0x1f23be){_0xa40546(null,!![]);}else{_0xa40546(null,![]);}});},'makeSalt':function(_0x4631f7,_0x4201fa){var _0x5e4f3d=0x10;if(typeof arguments[0x0]===_0x069e('0x3e')){_0x4201fa=arguments[0x0];_0x4631f7=_0x5e4f3d;}else if(typeof arguments[0x1]===_0x069e('0x3e')){_0x4201fa=arguments[0x1];}else{throw new Error(_0x069e('0x3f'));}if(!_0x4631f7){_0x4631f7=_0x5e4f3d;}return crypto[_0x069e('0x40')](_0x4631f7,function(_0x4a4a90,_0x5a7fa4){if(_0x4a4a90){_0x4201fa(_0x4a4a90);}return _0x4201fa(null,_0x5a7fa4[_0x069e('0x41')](_0x069e('0x42')));});},'encryptPassword':function(_0x48bae7,_0x1f856e){if(!_0x48bae7||!this[_0x069e('0x43')]){return _0x1f856e?_0x1f856e(null):null;}var _0x5df785=0x2710;var _0xc3fee7=0x40;var _0x275479=new Buffer(this[_0x069e('0x43')],'base64');if(!_0x1f856e){return crypto[_0x069e('0x44')](_0x48bae7,_0x275479,_0x5df785,_0xc3fee7,'sha1')[_0x069e('0x41')](_0x069e('0x42'));}return crypto[_0x069e('0x45')](_0x48bae7,_0x275479,_0x5df785,_0xc3fee7,_0x069e('0x46'),function(_0x467c9b,_0xf04132){if(_0x467c9b){_0x1f856e(_0x467c9b);}return _0x1f856e(null,_0xf04132[_0x069e('0x41')](_0x069e('0x42')));});},'updatePassword':function(_0x17e9f1){if(!this[_0x069e('0x37')]){return _0x17e9f1(null);}if(!validatePresenceOf(this[_0x069e('0x37')])&&authTypes['indexOf'](this[_0x069e('0x47')])===-0x1){_0x17e9f1(new Error('Invalid\x20password'));}var _0x5c88d7=this;this[_0x069e('0x48')](function(_0x3e3bea,_0x23acfe){if(_0x3e3bea){return _0x17e9f1(_0x3e3bea);}_0x5c88d7[_0x069e('0x43')]=_0x23acfe;_0x5c88d7[_0x069e('0x3d')](_0x5c88d7[_0x069e('0x37')],function(_0x1062f3,_0x1ec64d){if(_0x1062f3){_0x17e9f1(_0x1062f3);}_0x5c88d7['password']=_0x1ec64d;_0x17e9f1(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0x069e('0x49')+this[_0x069e('0x37')]);return this['md5secret'];}}});};