Built motion from commit (unavailable).|2.5.4
[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 _0x9d22=['prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','wav','WAV','context','CDR(type)=internal','extensionMonitor','includes','Set','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','priority','findAll','then','internal','models','define','User','users','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','catch','resolve','changed','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','makeSalt','md5secret','crypto','md5','lodash','length','from-sip','system','format','%s%s'];(function(_0x530c00,_0x229fd1){var _0xc2a4b3=function(_0x137ada){while(--_0x137ada){_0x530c00['push'](_0x530c00['shift']());}};_0xc2a4b3(++_0x229fd1);}(_0x9d22,0x1b8));var _0x29d2=function(_0x4fa4fd,_0x4c656b){_0x4fa4fd=_0x4fa4fd-0x0;var _0x3c50d0=_0x9d22[_0x4fa4fd];return _0x3c50d0;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x29d2('0x0'));var util=require('util');var md5=require(_0x29d2('0x1'));var _=require(_0x29d2('0x2'));var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x5d527f){return _0x5d527f&&_0x5d527f[_0x29d2('0x3')];};var getChanSpyApplications=function(_0x3200c1,_0x2f697f,_0x402df4){var _0x10d5e4={'context':_0x3200c1['context']||_0x29d2('0x4'),'type':_0x29d2('0x5'),'isApp':![],'UserId':_0x3200c1['id']};var _0x3f7d29=[];for(var _0x283eb1=0x0,_0x3656bf=0x1;_0x283eb1<_0x402df4[_0x29d2('0x3')];_0x283eb1++,_0x3656bf=0x1){var _0x482b4e={'exten':util[_0x29d2('0x6')](_0x29d2('0x7'),_0x402df4[_0x283eb1][_0x29d2('0x8')],_0x2f697f),'ChanSpyId':_0x402df4[_0x283eb1]['id']};_0x3f7d29[_0x29d2('0x9')](_[_0x29d2('0xa')]({'app':'Set','appdata':util[_0x29d2('0x6')](_0x29d2('0xb'),_0x29d2('0xc')),'priority':_0x3656bf++},_0x10d5e4,_0x482b4e));if(_0x402df4[_0x283eb1][_0x29d2('0xd')]){_0x3f7d29['push'](_[_0x29d2('0xa')]({'app':_0x29d2('0xe'),'appdata':util[_0x29d2('0x6')](_0x29d2('0xf'),_0x402df4[_0x283eb1][_0x29d2('0x10')]),'priority':_0x3656bf++},_0x10d5e4,_0x482b4e));}if(_0x402df4[_0x283eb1][_0x29d2('0x11')]){_0x3f7d29['push'](_['merge']({'app':_0x29d2('0x12'),'appdata':_0x402df4[_0x283eb1][_0x29d2('0x13')],'priority':_0x3656bf++},_0x10d5e4,_0x482b4e));}_0x3f7d29[_0x29d2('0x9')](_[_0x29d2('0xa')]({'app':_0x29d2('0x14'),'appdata':util[_0x29d2('0x6')]('SIP/%s,%s',_0x3200c1[_0x29d2('0x15')],_0x402df4[_0x283eb1][_0x29d2('0x16')]?_0x402df4[_0x283eb1][_0x29d2('0x16')][_0x29d2('0x17')](''):''),'priority':_0x3656bf++},_0x10d5e4,_0x482b4e));if(_0x402df4[_0x283eb1][_0x29d2('0xd')]){_0x3f7d29['push'](_['merge']({'app':_0x29d2('0x18'),'priority':_0x3656bf++},_0x10d5e4,_0x482b4e));}}return _0x3f7d29;};var getUserApplications=function(_0x51ad0d,_0x44143d){var _0x54953a=[_0x29d2('0x19'),_0x29d2('0x1a'),'gsm'];var _0x25f24a={'context':_0x51ad0d[_0x29d2('0x1b')]||'from-sip','exten':_0x44143d,'type':_0x29d2('0x5'),'isApp':![],'UserId':_0x51ad0d['id']};var _0x11b4af=[{'app':'Set','appdata':_0x29d2('0x1c')}];if(_0x51ad0d[_0x29d2('0x1d')]&&_[_0x29d2('0x1e')](_0x54953a,_0x51ad0d[_0x29d2('0x1d')])){_0x11b4af['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x11b4af[_0x29d2('0x9')]({'app':_0x29d2('0x1f'),'appdata':util[_0x29d2('0x6')](_0x29d2('0x20'),_0x51ad0d[_0x29d2('0x1d')])});_0x11b4af['push']({'app':_0x29d2('0x21'),'appdata':util[_0x29d2('0x6')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x51ad0d[_0x29d2('0x15')])});}else{_0x11b4af[_0x29d2('0x9')]({'app':_0x29d2('0x21'),'appdata':util[_0x29d2('0x6')](_0x29d2('0x22'),_0x51ad0d[_0x29d2('0x15')])});}_0x11b4af['push']({'app':'Hangup'});for(var _0x236848=0x0;_0x236848<_0x11b4af[_0x29d2('0x3')];_0x236848++){_0x11b4af[_0x236848][_0x29d2('0x23')]=_0x236848+0x1;_0x11b4af[_0x236848]=_['defaults'](_0x11b4af[_0x236848],_0x25f24a);}return _0x11b4af;};var getChanSpyPromise=function(_0x5a087a,_0x49543b){return new BPromise(function(_0x437354,_0x211f2b){return _0x5a087a['VoiceChanSpy'][_0x29d2('0x24')]()[_0x29d2('0x25')](function(_0x16240c){if(_0x16240c){var _0x23038a=getChanSpyApplications(_0x49543b,_0x49543b[_0x29d2('0x26')],_0x16240c);if(_0x49543b[_0x29d2('0x26')]!=_0x49543b['name']){_0x23038a=_0x23038a['concat'](getChanSpyApplications(_0x49543b,_0x49543b[_0x29d2('0x15')],_0x16240c));}return _0x437354(_0x23038a);}return _0x437354([]);})['catch'](function(_0x550589){_0x211f2b(_0x550589);});});};module['exports']=function(_0x38b487,_0x5838de){var _0x212730=_0x38b487[_0x29d2('0x27')];return _0x38b487[_0x29d2('0x28')](_0x29d2('0x29'),attributes,{'tableName':_0x29d2('0x2a'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x25cc1a,_0x4b7844,_0x130ba2){_0x25cc1a[_0x29d2('0x2b')]();_0x25cc1a[_0x29d2('0x2c')](_0x130ba2);},'beforeUpdate':function(_0x17bad5,_0x340ac6,_0x2aaf5c){if(_0x17bad5['changed'](_0x29d2('0x13'))){_0x17bad5['updateMd5Password']();return _0x17bad5[_0x29d2('0x2c')](_0x2aaf5c);}_0x2aaf5c();},'afterCreate':function(_0x59e5a1,_0x426f94,_0x5ccd4c){var _0x15e9bc=getUserApplications(_0x59e5a1,_0x59e5a1['internal']);if(_0x59e5a1['internal']!=_0x59e5a1[_0x29d2('0x15')]){_0x15e9bc=_0x15e9bc['concat'](getUserApplications(_0x59e5a1,_0x59e5a1[_0x29d2('0x15')]));}return _0x212730[_0x29d2('0x2d')][_0x29d2('0x2e')](_0x15e9bc)[_0x29d2('0x25')](function(){if(_0x59e5a1[_0x29d2('0xc')]){return getChanSpyPromise(_0x212730,_0x59e5a1);}})['then'](function(_0x5d0f39){if(_0x5d0f39&&_0x5d0f39[_0x29d2('0x3')]){return _0x212730['VoiceExtension']['bulkCreate'](_0x5d0f39);}})[_0x29d2('0x25')](function(){_0x5ccd4c();})[_0x29d2('0x2f')](function(_0x30dd8c){_0x5ccd4c(_0x30dd8c);});},'afterUpdate':function(_0x1dbf4d,_0x54e864,_0x45e11a){return BPromise[_0x29d2('0x30')]()[_0x29d2('0x25')](function(){if(_0x1dbf4d['changed']('chanspy')||_0x1dbf4d[_0x29d2('0x31')](_0x29d2('0x1b'))){return _0x212730[_0x29d2('0x2d')][_0x29d2('0x32')]({'where':{'UserId':_0x1dbf4d['id'],'type':_0x29d2('0x5'),'ChanSpyId':{'$ne':null}}})[_0x29d2('0x25')](function(){if(_0x1dbf4d['chanspy']){return getChanSpyPromise(_0x212730,_0x1dbf4d)[_0x29d2('0x25')](function(_0x3115ab){if(_0x3115ab&&_0x3115ab['length']){return _0x212730[_0x29d2('0x2d')]['bulkCreate'](_0x3115ab);}});}});}})[_0x29d2('0x25')](function(){if(_0x1dbf4d['changed'](_0x29d2('0x1d'))||_0x1dbf4d[_0x29d2('0x31')]('context')){return _0x212730[_0x29d2('0x2d')][_0x29d2('0x32')]({'where':{'UserId':_0x1dbf4d['id'],'type':_0x29d2('0x5'),'ChanSpyId':null}})['then'](function(){var _0xf2b31e=getUserApplications(_0x1dbf4d,_0x1dbf4d[_0x29d2('0x26')]);if(_0x1dbf4d[_0x29d2('0x26')]!=_0x1dbf4d[_0x29d2('0x15')]){_0xf2b31e=_0xf2b31e['concat'](getUserApplications(_0x1dbf4d,_0x1dbf4d[_0x29d2('0x15')]));}return _0x212730[_0x29d2('0x2d')][_0x29d2('0x2e')](_0xf2b31e);});}})['then'](function(){_0x45e11a();})['catch'](function(_0x5adcb2){_0x45e11a(_0x5adcb2);});},'afterDestroy':function(_0xb14433,_0x51f393){return _0x212730[_0x29d2('0x2d')]['destroy']({'where':{'UserId':_0xb14433['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1298f6,_0x4e4616){if(!_0x4e4616){return this[_0x29d2('0x13')]===this['encryptPassword'](_0x1298f6);}var _0x4b53d9=this;this[_0x29d2('0x33')](_0x1298f6,function(_0x8072a,_0x180d9a){if(_0x8072a){_0x4e4616(_0x8072a);}if(_0x4b53d9[_0x29d2('0x13')]===_0x180d9a){_0x4e4616(null,!![]);}else{_0x4e4616(null,![]);}});},'makeSalt':function(_0x35a10d,_0x38ee18){var _0x4631df=0x10;if(typeof arguments[0x0]===_0x29d2('0x34')){_0x38ee18=arguments[0x0];_0x35a10d=_0x4631df;}else if(typeof arguments[0x1]===_0x29d2('0x34')){_0x38ee18=arguments[0x1];}else{throw new Error(_0x29d2('0x35'));}if(!_0x35a10d){_0x35a10d=_0x4631df;}return crypto[_0x29d2('0x36')](_0x35a10d,function(_0x57a08a,_0x585190){if(_0x57a08a){_0x38ee18(_0x57a08a);}return _0x38ee18(null,_0x585190['toString']('base64'));});},'encryptPassword':function(_0x265902,_0x27b9f5){if(!_0x265902||!this[_0x29d2('0x37')]){return _0x27b9f5?_0x27b9f5(null):null;}var _0xe9d5b6=0x2710;var _0x2fcff5=0x40;var _0x53a0e5=new Buffer(this[_0x29d2('0x37')],_0x29d2('0x38'));if(!_0x27b9f5){return crypto[_0x29d2('0x39')](_0x265902,_0x53a0e5,_0xe9d5b6,_0x2fcff5,_0x29d2('0x3a'))[_0x29d2('0x3b')]('base64');}return crypto[_0x29d2('0x3c')](_0x265902,_0x53a0e5,_0xe9d5b6,_0x2fcff5,_0x29d2('0x3a'),function(_0x9741ec,_0x3f35d5){if(_0x9741ec){_0x27b9f5(_0x9741ec);}return _0x27b9f5(null,_0x3f35d5[_0x29d2('0x3b')](_0x29d2('0x38')));});},'updatePassword':function(_0x20827b){if(!this[_0x29d2('0x13')]){return _0x20827b(null);}if(!validatePresenceOf(this[_0x29d2('0x13')])&&authTypes[_0x29d2('0x3d')](this['provider'])===-0x1){_0x20827b(new Error('Invalid\x20password'));}var _0x5df60a=this;this[_0x29d2('0x3e')](function(_0x25ffc8,_0x90efb){if(_0x25ffc8){return _0x20827b(_0x25ffc8);}_0x5df60a[_0x29d2('0x37')]=_0x90efb;_0x5df60a[_0x29d2('0x33')](_0x5df60a[_0x29d2('0x13')],function(_0x436aee,_0x307507){if(_0x436aee){_0x20827b(_0x436aee);}_0x5df60a[_0x29d2('0x13')]=_0x307507;_0x20827b(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x29d2('0x15')]+':asterisk:'+this['password']);return this[_0x29d2('0x3f')];}}});};