12b890f22163cc101aa7745f450f66b4aaf7bdf9
[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 _0xd4c3=['prefix','merge','Set','CDR(type)=%s','chanspy','record','push','MixMonitor','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','gsm','system','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','concat','catch','exports','models','users','utf8','utf8_bin','updatePassword','changed','updateMd5Password','internal','VoiceExtension','bulkCreate','then','destroy','encryptPassword','password','Missing\x20Callback','randomBytes','toString','base64','pbkdf2Sync','indexOf','provider','Invalid\x20password','salt','md5secret',':asterisk:','bluebird','crypto','md5','lodash','./user.attributes','google','length','context','from-sip','format','%s%s'];(function(_0x43edf3,_0xfa2a33){var _0x1f8d7a=function(_0x129167){while(--_0x129167){_0x43edf3['push'](_0x43edf3['shift']());}};_0x1f8d7a(++_0xfa2a33);}(_0xd4c3,0xca));var _0x3d4c=function(_0x3f3bad,_0x193f06){_0x3f3bad=_0x3f3bad-0x0;var _0x4f0801=_0xd4c3[_0x3f3bad];return _0x4f0801;};'use strict';var BPromise=require(_0x3d4c('0x0'));var crypto=require(_0x3d4c('0x1'));var util=require('util');var md5=require(_0x3d4c('0x2'));var _=require(_0x3d4c('0x3'));var attributes=require(_0x3d4c('0x4'));var authTypes=[_0x3d4c('0x5')];var validatePresenceOf=function(_0x4cdfb4){return _0x4cdfb4&&_0x4cdfb4[_0x3d4c('0x6')];};var getChanSpyApplications=function(_0x54eab6,_0x117e16,_0x19855b){var _0x2a58d4={'context':_0x54eab6[_0x3d4c('0x7')]||_0x3d4c('0x8'),'type':'system','isApp':![],'UserId':_0x54eab6['id']};var _0x590e69=[];for(var _0x1c2085=0x0,_0x37c970=0x1;_0x1c2085<_0x19855b[_0x3d4c('0x6')];_0x1c2085++,_0x37c970=0x1){var _0x5b286f={'exten':util[_0x3d4c('0x9')](_0x3d4c('0xa'),_0x19855b[_0x1c2085][_0x3d4c('0xb')],_0x117e16),'ChanSpyId':_0x19855b[_0x1c2085]['id']};_0x590e69['push'](_[_0x3d4c('0xc')]({'app':_0x3d4c('0xd'),'appdata':util[_0x3d4c('0x9')](_0x3d4c('0xe'),_0x3d4c('0xf')),'priority':_0x37c970++},_0x2a58d4,_0x5b286f));if(_0x19855b[_0x1c2085][_0x3d4c('0x10')]){_0x590e69[_0x3d4c('0x11')](_['merge']({'app':_0x3d4c('0x12'),'appdata':util[_0x3d4c('0x9')]('${UNIQUEID}.%s,a',_0x19855b[_0x1c2085][_0x3d4c('0x13')]),'priority':_0x37c970++},_0x2a58d4,_0x5b286f));}if(_0x19855b[_0x1c2085][_0x3d4c('0x14')]){_0x590e69['push'](_[_0x3d4c('0xc')]({'app':_0x3d4c('0x15'),'appdata':_0x19855b[_0x1c2085]['password'],'priority':_0x37c970++},_0x2a58d4,_0x5b286f));}_0x590e69[_0x3d4c('0x11')](_[_0x3d4c('0xc')]({'app':_0x3d4c('0x16'),'appdata':util[_0x3d4c('0x9')](_0x3d4c('0x17'),_0x54eab6['name'],_0x19855b[_0x1c2085][_0x3d4c('0x18')]?_0x19855b[_0x1c2085]['options'][_0x3d4c('0x19')](''):''),'priority':_0x37c970++},_0x2a58d4,_0x5b286f));if(_0x19855b[_0x1c2085][_0x3d4c('0x10')]){_0x590e69['push'](_[_0x3d4c('0xc')]({'app':_0x3d4c('0x1a'),'priority':_0x37c970++},_0x2a58d4,_0x5b286f));}}return _0x590e69;};var getUserApplications=function(_0x3a1fdf,_0x3425a0){var _0x28d811=[_0x3d4c('0x1b'),'WAV',_0x3d4c('0x1c')];var _0x31305c={'context':_0x3a1fdf[_0x3d4c('0x7')]||_0x3d4c('0x8'),'exten':_0x3425a0,'type':_0x3d4c('0x1d'),'isApp':![],'UserId':_0x3a1fdf['id']};var _0x13b4ed=[{'app':'Set','appdata':_0x3d4c('0x1e')}];if(_0x3a1fdf[_0x3d4c('0x1f')]&&_[_0x3d4c('0x20')](_0x28d811,_0x3a1fdf[_0x3d4c('0x1f')])){_0x13b4ed[_0x3d4c('0x11')]({'app':_0x3d4c('0xd'),'appdata':_0x3d4c('0x21')});_0x13b4ed[_0x3d4c('0x11')]({'app':_0x3d4c('0xd'),'appdata':util[_0x3d4c('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x3a1fdf[_0x3d4c('0x1f')])});_0x13b4ed[_0x3d4c('0x11')]({'app':'Dial','appdata':util[_0x3d4c('0x9')](_0x3d4c('0x22'),_0x3a1fdf[_0x3d4c('0x23')])});}else{_0x13b4ed[_0x3d4c('0x11')]({'app':_0x3d4c('0x24'),'appdata':util[_0x3d4c('0x9')](_0x3d4c('0x25'),_0x3a1fdf[_0x3d4c('0x23')])});}_0x13b4ed[_0x3d4c('0x11')]({'app':_0x3d4c('0x26')});for(var _0x1c7643=0x0;_0x1c7643<_0x13b4ed[_0x3d4c('0x6')];_0x1c7643++){_0x13b4ed[_0x1c7643][_0x3d4c('0x27')]=_0x1c7643+0x1;_0x13b4ed[_0x1c7643]=_[_0x3d4c('0x28')](_0x13b4ed[_0x1c7643],_0x31305c);}return _0x13b4ed;};var getChanSpyPromise=function(_0xafcb75,_0x35f380){return new BPromise(function(_0x52c37c,_0x3c20a3){return _0xafcb75[_0x3d4c('0x29')][_0x3d4c('0x2a')]()['then'](function(_0x282baf){if(_0x282baf){var _0x3731d0=getChanSpyApplications(_0x35f380,_0x35f380['internal'],_0x282baf);if(_0x35f380['internal']!=_0x35f380[_0x3d4c('0x23')]){_0x3731d0=_0x3731d0[_0x3d4c('0x2b')](getChanSpyApplications(_0x35f380,_0x35f380[_0x3d4c('0x23')],_0x282baf));}return _0x52c37c(_0x3731d0);}return _0x52c37c([]);})[_0x3d4c('0x2c')](function(_0x2d1247){_0x3c20a3(_0x2d1247);});});};module[_0x3d4c('0x2d')]=function(_0x58608d,_0x1fbd98){var _0x29133d=_0x58608d[_0x3d4c('0x2e')];return _0x58608d['define']('User',attributes,{'tableName':_0x3d4c('0x2f'),'charset':_0x3d4c('0x30'),'collate':_0x3d4c('0x31'),'hooks':{'beforeCreate':function(_0x110aa6,_0x3e2c20,_0x383269){_0x110aa6['updateMd5Password']();_0x110aa6[_0x3d4c('0x32')](_0x383269);},'beforeUpdate':function(_0x99457,_0x4f6334,_0x1c4f7a){if(_0x99457[_0x3d4c('0x33')]('password')){_0x99457[_0x3d4c('0x34')]();return _0x99457[_0x3d4c('0x32')](_0x1c4f7a);}_0x1c4f7a();},'afterCreate':function(_0x3f38ee,_0x534bf9,_0x5302d7){var _0x32f075=getUserApplications(_0x3f38ee,_0x3f38ee['internal']);if(_0x3f38ee[_0x3d4c('0x35')]!=_0x3f38ee[_0x3d4c('0x23')]){_0x32f075=_0x32f075['concat'](getUserApplications(_0x3f38ee,_0x3f38ee['name']));}return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x37')](_0x32f075)[_0x3d4c('0x38')](function(){if(_0x3f38ee[_0x3d4c('0xf')]){return getChanSpyPromise(_0x29133d,_0x3f38ee);}})[_0x3d4c('0x38')](function(_0x244443){if(_0x244443&&_0x244443['length']){return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x37')](_0x244443);}})['then'](function(){_0x5302d7();})[_0x3d4c('0x2c')](function(_0x3e742a){_0x5302d7(_0x3e742a);});},'afterUpdate':function(_0x430bed,_0x1f9a1c,_0x3a9253){return BPromise['resolve']()[_0x3d4c('0x38')](function(){if(_0x430bed[_0x3d4c('0x33')](_0x3d4c('0xf'))||_0x430bed[_0x3d4c('0x33')](_0x3d4c('0x7'))){return _0x29133d[_0x3d4c('0x36')]['destroy']({'where':{'UserId':_0x430bed['id'],'type':_0x3d4c('0x1d'),'ChanSpyId':{'$ne':null}}})[_0x3d4c('0x38')](function(){if(_0x430bed[_0x3d4c('0xf')]){return getChanSpyPromise(_0x29133d,_0x430bed)[_0x3d4c('0x38')](function(_0x13e088){if(_0x13e088&&_0x13e088['length']){return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x37')](_0x13e088);}});}});}})[_0x3d4c('0x38')](function(){if(_0x430bed[_0x3d4c('0x33')](_0x3d4c('0x1f'))||_0x430bed['changed'](_0x3d4c('0x7'))){return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x39')]({'where':{'UserId':_0x430bed['id'],'type':_0x3d4c('0x1d'),'ChanSpyId':null}})['then'](function(){var _0x4f6b75=getUserApplications(_0x430bed,_0x430bed['internal']);if(_0x430bed[_0x3d4c('0x35')]!=_0x430bed[_0x3d4c('0x23')]){_0x4f6b75=_0x4f6b75[_0x3d4c('0x2b')](getUserApplications(_0x430bed,_0x430bed[_0x3d4c('0x23')]));}return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x37')](_0x4f6b75);});}})[_0x3d4c('0x38')](function(){_0x3a9253();})[_0x3d4c('0x2c')](function(_0x43dbfe){_0x3a9253(_0x43dbfe);});},'afterDestroy':function(_0xca76ed,_0x1cbe19){return _0x29133d[_0x3d4c('0x36')][_0x3d4c('0x39')]({'where':{'UserId':_0xca76ed['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3437cd,_0x23f081){if(!_0x23f081){return this['password']===this[_0x3d4c('0x3a')](_0x3437cd);}var _0x59f6b1=this;this[_0x3d4c('0x3a')](_0x3437cd,function(_0x30c973,_0x189ec9){if(_0x30c973){_0x23f081(_0x30c973);}if(_0x59f6b1[_0x3d4c('0x3b')]===_0x189ec9){_0x23f081(null,!![]);}else{_0x23f081(null,![]);}});},'makeSalt':function(_0x16eaa2,_0x2535ec){var _0x5bd7a8=0x10;if(typeof arguments[0x0]==='function'){_0x2535ec=arguments[0x0];_0x16eaa2=_0x5bd7a8;}else if(typeof arguments[0x1]==='function'){_0x2535ec=arguments[0x1];}else{throw new Error(_0x3d4c('0x3c'));}if(!_0x16eaa2){_0x16eaa2=_0x5bd7a8;}return crypto[_0x3d4c('0x3d')](_0x16eaa2,function(_0x17f44c,_0x40fb34){if(_0x17f44c){_0x2535ec(_0x17f44c);}return _0x2535ec(null,_0x40fb34[_0x3d4c('0x3e')](_0x3d4c('0x3f')));});},'encryptPassword':function(_0x537c5e,_0x41c188){if(!_0x537c5e||!this['salt']){return _0x41c188?_0x41c188(null):null;}var _0x57afd6=0x2710;var _0x3d8ee6=0x40;var _0x2303d6=new Buffer(this['salt'],_0x3d4c('0x3f'));if(!_0x41c188){return crypto[_0x3d4c('0x40')](_0x537c5e,_0x2303d6,_0x57afd6,_0x3d8ee6,'sha1')[_0x3d4c('0x3e')]('base64');}return crypto['pbkdf2'](_0x537c5e,_0x2303d6,_0x57afd6,_0x3d8ee6,'sha1',function(_0x1466c0,_0x48c098){if(_0x1466c0){_0x41c188(_0x1466c0);}return _0x41c188(null,_0x48c098['toString'](_0x3d4c('0x3f')));});},'updatePassword':function(_0x2ad9c4){if(!this['password']){return _0x2ad9c4(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x3d4c('0x41')](this[_0x3d4c('0x42')])===-0x1){_0x2ad9c4(new Error(_0x3d4c('0x43')));}var _0x4ef236=this;this['makeSalt'](function(_0x5a945c,_0x2609e2){if(_0x5a945c){return _0x2ad9c4(_0x5a945c);}_0x4ef236[_0x3d4c('0x44')]=_0x2609e2;_0x4ef236[_0x3d4c('0x3a')](_0x4ef236[_0x3d4c('0x3b')],function(_0x214a06,_0x1d58f6){if(_0x214a06){_0x2ad9c4(_0x214a06);}_0x4ef236[_0x3d4c('0x3b')]=_0x1d58f6;_0x2ad9c4(null);});});},'updateMd5Password':function(){this[_0x3d4c('0x45')]=md5(this['name']+_0x3d4c('0x46')+this[_0x3d4c('0x3b')]);return this[_0x3d4c('0x45')];}}});};