Built motion from commit (unavailable).|2.5.22
[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 _0x948c=['utf8_bin','updateMd5Password','updatePassword','changed','concat','VoiceExtension','bulkCreate','destroy','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','crypto','lodash','./user.attributes','context','from-sip','length','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','name','options','StopMixMonitor','wav','gsm','system','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','users','utf8'];(function(_0xf62e93,_0x101f5c){var _0x15e79d=function(_0x589b09){while(--_0x589b09){_0xf62e93['push'](_0xf62e93['shift']());}};_0x15e79d(++_0x101f5c);}(_0x948c,0x1e4));var _0xc948=function(_0x26bcec,_0xe13f50){_0x26bcec=_0x26bcec-0x0;var _0x1049dc=_0x948c[_0x26bcec];return _0x1049dc;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xc948('0x0'));var util=require('util');var md5=require('md5');var _=require(_0xc948('0x1'));var attributes=require(_0xc948('0x2'));var authTypes=['google'];var validatePresenceOf=function(_0x477982){return _0x477982&&_0x477982['length'];};var getChanSpyApplications=function(_0x3efadd,_0x234631,_0x506841){var _0x3c92ca={'context':_0x3efadd[_0xc948('0x3')]||_0xc948('0x4'),'type':'system','isApp':![],'UserId':_0x3efadd['id']};var _0x46cbbb=[];for(var _0x263087=0x0,_0x37b9db=0x1;_0x263087<_0x506841[_0xc948('0x5')];_0x263087++,_0x37b9db=0x1){var _0x1f1a72={'exten':util[_0xc948('0x6')]('%s%s',_0x506841[_0x263087][_0xc948('0x7')],_0x234631),'ChanSpyId':_0x506841[_0x263087]['id']};_0x46cbbb[_0xc948('0x8')](_[_0xc948('0x9')]({'app':_0xc948('0xa'),'appdata':util[_0xc948('0x6')](_0xc948('0xb'),_0xc948('0xc')),'priority':_0x37b9db++},_0x3c92ca,_0x1f1a72));if(_0x506841[_0x263087][_0xc948('0xd')]){_0x46cbbb[_0xc948('0x8')](_['merge']({'app':_0xc948('0xe'),'appdata':util[_0xc948('0x6')](_0xc948('0xf'),_0x506841[_0x263087]['recordingFormat']),'priority':_0x37b9db++},_0x3c92ca,_0x1f1a72));}if(_0x506841[_0x263087][_0xc948('0x10')]){_0x46cbbb[_0xc948('0x8')](_[_0xc948('0x9')]({'app':_0xc948('0x11'),'appdata':_0x506841[_0x263087][_0xc948('0x12')],'priority':_0x37b9db++},_0x3c92ca,_0x1f1a72));}_0x46cbbb[_0xc948('0x8')](_['merge']({'app':_0xc948('0x13'),'appdata':util[_0xc948('0x6')]('SIP/%s,%s',_0x3efadd[_0xc948('0x14')],_0x506841[_0x263087][_0xc948('0x15')]?_0x506841[_0x263087]['options']['join'](''):''),'priority':_0x37b9db++},_0x3c92ca,_0x1f1a72));if(_0x506841[_0x263087][_0xc948('0xd')]){_0x46cbbb[_0xc948('0x8')](_[_0xc948('0x9')]({'app':_0xc948('0x16'),'priority':_0x37b9db++},_0x3c92ca,_0x1f1a72));}}return _0x46cbbb;};var getUserApplications=function(_0x5d1a19,_0x3e1c31){var _0xf7b86e=[_0xc948('0x17'),'WAV',_0xc948('0x18')];var _0x5293d0={'context':_0x5d1a19[_0xc948('0x3')]||_0xc948('0x4'),'exten':_0x3e1c31,'type':_0xc948('0x19'),'isApp':![],'UserId':_0x5d1a19['id']};var _0x518a62=[{'app':_0xc948('0xa'),'appdata':'CDR(type)=internal'}];if(_0x5d1a19['extensionMonitor']&&_[_0xc948('0x1a')](_0xf7b86e,_0x5d1a19[_0xc948('0x1b')])){_0x518a62['push']({'app':'Set','appdata':_0xc948('0x1c')});_0x518a62[_0xc948('0x8')]({'app':_0xc948('0xa'),'appdata':util[_0xc948('0x6')](_0xc948('0x1d'),_0x5d1a19[_0xc948('0x1b')])});_0x518a62[_0xc948('0x8')]({'app':'Dial','appdata':util[_0xc948('0x6')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5d1a19[_0xc948('0x14')])});}else{_0x518a62[_0xc948('0x8')]({'app':_0xc948('0x1e'),'appdata':util[_0xc948('0x6')](_0xc948('0x1f'),_0x5d1a19[_0xc948('0x14')])});}_0x518a62[_0xc948('0x8')]({'app':_0xc948('0x20')});for(var _0xc9a848=0x0;_0xc9a848<_0x518a62[_0xc948('0x5')];_0xc9a848++){_0x518a62[_0xc9a848][_0xc948('0x21')]=_0xc9a848+0x1;_0x518a62[_0xc9a848]=_[_0xc948('0x22')](_0x518a62[_0xc9a848],_0x5293d0);}return _0x518a62;};var getChanSpyPromise=function(_0x1d6dab,_0x21d444){return new BPromise(function(_0x2e3e9a,_0x19f617){return _0x1d6dab[_0xc948('0x23')][_0xc948('0x24')]()[_0xc948('0x25')](function(_0x213216){if(_0x213216){var _0x317502=getChanSpyApplications(_0x21d444,_0x21d444[_0xc948('0x26')],_0x213216);if(_0x21d444[_0xc948('0x26')]!=_0x21d444[_0xc948('0x14')]){_0x317502=_0x317502['concat'](getChanSpyApplications(_0x21d444,_0x21d444[_0xc948('0x14')],_0x213216));}return _0x2e3e9a(_0x317502);}return _0x2e3e9a([]);})[_0xc948('0x27')](function(_0x56f542){_0x19f617(_0x56f542);});});};module[_0xc948('0x28')]=function(_0x3425bd,_0x4260ed){var _0x457795=_0x3425bd[_0xc948('0x29')];return _0x3425bd['define']('User',attributes,{'tableName':_0xc948('0x2a'),'charset':_0xc948('0x2b'),'collate':_0xc948('0x2c'),'hooks':{'beforeCreate':function(_0x4c62cd,_0x51c3d5,_0x2b0359){_0x4c62cd[_0xc948('0x2d')]();_0x4c62cd[_0xc948('0x2e')](_0x2b0359);},'beforeUpdate':function(_0x247a34,_0x3c2143,_0x45631f){if(_0x247a34[_0xc948('0x2f')](_0xc948('0x12'))){_0x247a34[_0xc948('0x2d')]();return _0x247a34[_0xc948('0x2e')](_0x45631f);}_0x45631f();},'afterCreate':function(_0x1b35da,_0x1279e5,_0x469f46){var _0x16c324=getUserApplications(_0x1b35da,_0x1b35da['internal']);if(_0x1b35da[_0xc948('0x26')]!=_0x1b35da[_0xc948('0x14')]){_0x16c324=_0x16c324[_0xc948('0x30')](getUserApplications(_0x1b35da,_0x1b35da[_0xc948('0x14')]));}return _0x457795['VoiceExtension']['bulkCreate'](_0x16c324)['then'](function(){if(_0x1b35da['chanspy']){return getChanSpyPromise(_0x457795,_0x1b35da);}})[_0xc948('0x25')](function(_0x12785c){if(_0x12785c&&_0x12785c[_0xc948('0x5')]){return _0x457795[_0xc948('0x31')][_0xc948('0x32')](_0x12785c);}})[_0xc948('0x25')](function(){_0x469f46();})[_0xc948('0x27')](function(_0x54cdd6){_0x469f46(_0x54cdd6);});},'afterUpdate':function(_0x5c7865,_0x1bf1b2,_0x555b03){return BPromise['resolve']()[_0xc948('0x25')](function(){if(_0x5c7865[_0xc948('0x2f')](_0xc948('0xc'))||_0x5c7865[_0xc948('0x2f')]('context')){return _0x457795['VoiceExtension'][_0xc948('0x33')]({'where':{'UserId':_0x5c7865['id'],'type':_0xc948('0x19'),'ChanSpyId':{'$ne':null}}})[_0xc948('0x25')](function(){if(_0x5c7865[_0xc948('0xc')]){return getChanSpyPromise(_0x457795,_0x5c7865)[_0xc948('0x25')](function(_0x5d6fae){if(_0x5d6fae&&_0x5d6fae['length']){return _0x457795[_0xc948('0x31')][_0xc948('0x32')](_0x5d6fae);}});}});}})[_0xc948('0x25')](function(){if(_0x5c7865[_0xc948('0x2f')]('extensionMonitor')||_0x5c7865['changed'](_0xc948('0x3'))){return _0x457795['VoiceExtension'][_0xc948('0x33')]({'where':{'UserId':_0x5c7865['id'],'type':_0xc948('0x19'),'ChanSpyId':null}})[_0xc948('0x25')](function(){var _0x3b3ba7=getUserApplications(_0x5c7865,_0x5c7865[_0xc948('0x26')]);if(_0x5c7865[_0xc948('0x26')]!=_0x5c7865[_0xc948('0x14')]){_0x3b3ba7=_0x3b3ba7[_0xc948('0x30')](getUserApplications(_0x5c7865,_0x5c7865[_0xc948('0x14')]));}return _0x457795[_0xc948('0x31')]['bulkCreate'](_0x3b3ba7);});}})[_0xc948('0x25')](function(){_0x555b03();})[_0xc948('0x27')](function(_0x24c398){_0x555b03(_0x24c398);});},'afterDestroy':function(_0x2a4afc,_0x2da0ea){return _0x457795[_0xc948('0x31')][_0xc948('0x33')]({'where':{'UserId':_0x2a4afc['id'],'type':_0xc948('0x19')}});}},'instanceMethods':{'authenticate':function(_0x5f4916,_0x4b630f){if(!_0x4b630f){return this[_0xc948('0x12')]===this['encryptPassword'](_0x5f4916);}var _0x3c2d8f=this;this['encryptPassword'](_0x5f4916,function(_0x5ea3c3,_0xbc2704){if(_0x5ea3c3){_0x4b630f(_0x5ea3c3);}if(_0x3c2d8f[_0xc948('0x12')]===_0xbc2704){_0x4b630f(null,!![]);}else{_0x4b630f(null,![]);}});},'makeSalt':function(_0x3744b2,_0x49ccd1){var _0x40215b=0x10;if(typeof arguments[0x0]==='function'){_0x49ccd1=arguments[0x0];_0x3744b2=_0x40215b;}else if(typeof arguments[0x1]===_0xc948('0x34')){_0x49ccd1=arguments[0x1];}else{throw new Error(_0xc948('0x35'));}if(!_0x3744b2){_0x3744b2=_0x40215b;}return crypto[_0xc948('0x36')](_0x3744b2,function(_0x396794,_0x4aa791){if(_0x396794){_0x49ccd1(_0x396794);}return _0x49ccd1(null,_0x4aa791[_0xc948('0x37')](_0xc948('0x38')));});},'encryptPassword':function(_0x2032c4,_0x50ce9e){if(!_0x2032c4||!this[_0xc948('0x39')]){return _0x50ce9e?_0x50ce9e(null):null;}var _0xeb518e=0x2710;var _0xc8b98a=0x40;var _0x195ad6=new Buffer(this['salt'],'base64');if(!_0x50ce9e){return crypto[_0xc948('0x3a')](_0x2032c4,_0x195ad6,_0xeb518e,_0xc8b98a,_0xc948('0x3b'))[_0xc948('0x37')](_0xc948('0x38'));}return crypto[_0xc948('0x3c')](_0x2032c4,_0x195ad6,_0xeb518e,_0xc8b98a,_0xc948('0x3b'),function(_0x400862,_0x2f366d){if(_0x400862){_0x50ce9e(_0x400862);}return _0x50ce9e(null,_0x2f366d['toString'](_0xc948('0x38')));});},'updatePassword':function(_0x130f53){if(!this['password']){return _0x130f53(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xc948('0x3d')](this[_0xc948('0x3e')])===-0x1){_0x130f53(new Error(_0xc948('0x3f')));}var _0x797708=this;this[_0xc948('0x40')](function(_0x33176d,_0x52412d){if(_0x33176d){return _0x130f53(_0x33176d);}_0x797708[_0xc948('0x39')]=_0x52412d;_0x797708['encryptPassword'](_0x797708['password'],function(_0xf4877f,_0x32188d){if(_0xf4877f){_0x130f53(_0xf4877f);}_0x797708[_0xc948('0x12')]=_0x32188d;_0x130f53(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xc948('0x14')]+_0xc948('0x41')+this[_0xc948('0x12')]);return this['md5secret'];}}});};