Built motion from commit (unavailable).|2.5.23
[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 _0x130d=['destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','pbkdf2Sync','pbkdf2','indexOf','provider','Invalid\x20password','md5secret','bluebird','util','lodash','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','merge','Set','chanspy','push','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','record','StopMixMonitor','wav','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','VoiceChanSpy','then','internal','concat','catch','exports','models','define','User','utf8','utf8_bin','undefined','resolve','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','UserProfile','changed','VoiceExtension','bulkCreate'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x130d,0x125));var _0xd130=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x130d[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd130('0x0'));var crypto=require('crypto');var util=require(_0xd130('0x1'));var md5=require('md5');var _=require(_0xd130('0x2'));var attributes=require(_0xd130('0x3'));var authTypes=[_0xd130('0x4')];var validatePresenceOf=function(_0x77d691){return _0x77d691&&_0x77d691[_0xd130('0x5')];};var getChanSpyApplications=function(_0x2bc19d,_0x46beb8,_0x1c314b){var _0x287e61={'context':_0x2bc19d[_0xd130('0x6')]||_0xd130('0x7'),'type':_0xd130('0x8'),'isApp':![],'UserId':_0x2bc19d['id']};var _0x3f77e1=[];for(var _0x1b9875=0x0,_0x4a3818=0x1;_0x1b9875<_0x1c314b[_0xd130('0x5')];_0x1b9875++,_0x4a3818=0x1){var _0x48d732={'exten':util[_0xd130('0x9')](_0xd130('0xa'),_0x1c314b[_0x1b9875][_0xd130('0xb')],_0x46beb8),'ChanSpyId':_0x1c314b[_0x1b9875]['id']};_0x3f77e1['push'](_[_0xd130('0xc')]({'app':_0xd130('0xd'),'appdata':util['format']('CDR(type)=%s',_0xd130('0xe')),'priority':_0x4a3818++},_0x287e61,_0x48d732));if(_0x1c314b[_0x1b9875]['record']){_0x3f77e1[_0xd130('0xf')](_[_0xd130('0xc')]({'app':'MixMonitor','appdata':util[_0xd130('0x9')](_0xd130('0x10'),_0x1c314b[_0x1b9875][_0xd130('0x11')]),'priority':_0x4a3818++},_0x287e61,_0x48d732));}if(_0x1c314b[_0x1b9875]['auth']){_0x3f77e1['push'](_['merge']({'app':_0xd130('0x12'),'appdata':_0x1c314b[_0x1b9875][_0xd130('0x13')],'priority':_0x4a3818++},_0x287e61,_0x48d732));}_0x3f77e1[_0xd130('0xf')](_[_0xd130('0xc')]({'app':_0xd130('0x14'),'appdata':util['format'](_0xd130('0x15'),_0x2bc19d[_0xd130('0x16')],_0x1c314b[_0x1b9875][_0xd130('0x17')]?_0x1c314b[_0x1b9875][_0xd130('0x17')]['join'](''):''),'priority':_0x4a3818++},_0x287e61,_0x48d732));if(_0x1c314b[_0x1b9875][_0xd130('0x18')]){_0x3f77e1[_0xd130('0xf')](_[_0xd130('0xc')]({'app':_0xd130('0x19'),'priority':_0x4a3818++},_0x287e61,_0x48d732));}}return _0x3f77e1;};var getUserApplications=function(_0x342eb2,_0xc1c504){var _0x43ed26=[_0xd130('0x1a'),'WAV','gsm'];var _0x5638c3={'context':_0x342eb2[_0xd130('0x6')]||_0xd130('0x7'),'exten':_0xc1c504,'type':'system','isApp':![],'UserId':_0x342eb2['id']};var _0x2420fd=[{'app':_0xd130('0xd'),'appdata':_0xd130('0x1b')}];if(_0x342eb2[_0xd130('0x1c')]&&_[_0xd130('0x1d')](_0x43ed26,_0x342eb2[_0xd130('0x1c')])){_0x2420fd['push']({'app':_0xd130('0xd'),'appdata':_0xd130('0x1e')});_0x2420fd[_0xd130('0xf')]({'app':_0xd130('0xd'),'appdata':util[_0xd130('0x9')](_0xd130('0x1f'),_0x342eb2[_0xd130('0x1c')])});_0x2420fd[_0xd130('0xf')]({'app':_0xd130('0x20'),'appdata':util[_0xd130('0x9')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x342eb2[_0xd130('0x16')])});}else{_0x2420fd[_0xd130('0xf')]({'app':_0xd130('0x20'),'appdata':util[_0xd130('0x9')](_0xd130('0x21'),_0x342eb2[_0xd130('0x16')])});}_0x2420fd['push']({'app':_0xd130('0x22')});for(var _0x4eef42=0x0;_0x4eef42<_0x2420fd[_0xd130('0x5')];_0x4eef42++){_0x2420fd[_0x4eef42]['priority']=_0x4eef42+0x1;_0x2420fd[_0x4eef42]=_['defaults'](_0x2420fd[_0x4eef42],_0x5638c3);}return _0x2420fd;};var getChanSpyPromise=function(_0x51a4bd,_0x3e0be6){return new BPromise(function(_0xaeb64f,_0x3a8218){return _0x51a4bd[_0xd130('0x23')]['findAll']()[_0xd130('0x24')](function(_0x154eb6){if(_0x154eb6){var _0x28127d=getChanSpyApplications(_0x3e0be6,_0x3e0be6['internal'],_0x154eb6);if(_0x3e0be6[_0xd130('0x25')]!=_0x3e0be6['name']){_0x28127d=_0x28127d[_0xd130('0x26')](getChanSpyApplications(_0x3e0be6,_0x3e0be6['name'],_0x154eb6));}return _0xaeb64f(_0x28127d);}return _0xaeb64f([]);})[_0xd130('0x27')](function(_0x19c180){_0x3a8218(_0x19c180);});});};module[_0xd130('0x28')]=function(_0x4c1ded,_0x31fca1){var _0x183829=_0x4c1ded[_0xd130('0x29')];return _0x4c1ded[_0xd130('0x2a')](_0xd130('0x2b'),attributes,{'tableName':'users','charset':_0xd130('0x2c'),'collate':_0xd130('0x2d'),'hooks':{'beforeCreate':function(_0x46c05d,_0x54b134,_0x1c6cda){var _0x42e822=typeof _0x46c05d['userProfileId']===_0xd130('0x2e')?BPromise[_0xd130('0x2f')](null):_0x183829['UserProfile'][_0xd130('0x30')]({'where':{'id':_0x46c05d[_0xd130('0x31')]}});_0x42e822[_0xd130('0x24')](function(_0x2ec866){if(_0x2ec866){_0x46c05d[_0xd130('0x32')]=_0x2ec866[_0xd130('0x32')];}})['then'](function(){_0x46c05d[_0xd130('0x33')]();_0x46c05d[_0xd130('0x34')](_0x1c6cda);})[_0xd130('0x27')](function(_0x3129b0){_0x1c6cda(_0x3129b0);});},'beforeUpdate':function(_0x31d369,_0x45f43b,_0x46056f){Promise[_0xd130('0x2f')]()[_0xd130('0x24')](function(){if(_0x31d369['changed'](_0xd130('0x31'))===![])return;return _0x183829[_0xd130('0x35')]['find']({'where':{'id':_0x31d369[_0xd130('0x31')]}})[_0xd130('0x24')](function(_0x269aca){if(_0x269aca)_0x31d369[_0xd130('0x32')]=_0x269aca[_0xd130('0x32')];return;});})['then'](function(){if(_0x31d369[_0xd130('0x36')](_0xd130('0x13'))){_0x31d369[_0xd130('0x33')]();return _0x31d369['updatePassword'](_0x46056f);}_0x46056f();})[_0xd130('0x27')](function(_0x294c40){_0x46056f(_0x294c40);});},'afterCreate':function(_0x52e3b3,_0x2c89f7,_0x2136ae){var _0x2dbbd6=getUserApplications(_0x52e3b3,_0x52e3b3[_0xd130('0x25')]);if(_0x52e3b3[_0xd130('0x25')]!=_0x52e3b3[_0xd130('0x16')]){_0x2dbbd6=_0x2dbbd6['concat'](getUserApplications(_0x52e3b3,_0x52e3b3['name']));}return _0x183829[_0xd130('0x37')][_0xd130('0x38')](_0x2dbbd6)[_0xd130('0x24')](function(){if(_0x52e3b3['chanspy']){return getChanSpyPromise(_0x183829,_0x52e3b3);}})['then'](function(_0x4d446a){if(_0x4d446a&&_0x4d446a['length']){return _0x183829[_0xd130('0x37')][_0xd130('0x38')](_0x4d446a);}})[_0xd130('0x24')](function(){_0x2136ae();})[_0xd130('0x27')](function(_0xe94f2a){_0x2136ae(_0xe94f2a);});},'afterUpdate':function(_0x58547c,_0x36856b,_0xd9f3de){return BPromise[_0xd130('0x2f')]()[_0xd130('0x24')](function(){if(_0x58547c[_0xd130('0x36')](_0xd130('0xe'))||_0x58547c[_0xd130('0x36')](_0xd130('0x6'))){return _0x183829['VoiceExtension'][_0xd130('0x39')]({'where':{'UserId':_0x58547c['id'],'type':_0xd130('0x8'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x58547c[_0xd130('0xe')]){return getChanSpyPromise(_0x183829,_0x58547c)['then'](function(_0x2ddac0){if(_0x2ddac0&&_0x2ddac0[_0xd130('0x5')]){return _0x183829['VoiceExtension'][_0xd130('0x38')](_0x2ddac0);}});}});}})['then'](function(){if(_0x58547c[_0xd130('0x36')](_0xd130('0x1c'))||_0x58547c[_0xd130('0x36')](_0xd130('0x6'))){return _0x183829[_0xd130('0x37')][_0xd130('0x39')]({'where':{'UserId':_0x58547c['id'],'type':_0xd130('0x8'),'ChanSpyId':null}})[_0xd130('0x24')](function(){var _0x3ba737=getUserApplications(_0x58547c,_0x58547c[_0xd130('0x25')]);if(_0x58547c[_0xd130('0x25')]!=_0x58547c[_0xd130('0x16')]){_0x3ba737=_0x3ba737[_0xd130('0x26')](getUserApplications(_0x58547c,_0x58547c[_0xd130('0x16')]));}return _0x183829['VoiceExtension']['bulkCreate'](_0x3ba737);});}})['then'](function(){_0xd9f3de();})['catch'](function(_0x4b941e){_0xd9f3de(_0x4b941e);});},'afterDestroy':function(_0x4941f0,_0x5352e5){return _0x183829[_0xd130('0x37')]['destroy']({'where':{'UserId':_0x4941f0['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1ac59c,_0x5c0e12){if(!_0x5c0e12){return this['password']===this[_0xd130('0x3a')](_0x1ac59c);}var _0x11a047=this;this[_0xd130('0x3a')](_0x1ac59c,function(_0x4e3bfa,_0x7a23a9){if(_0x4e3bfa){_0x5c0e12(_0x4e3bfa);}if(_0x11a047[_0xd130('0x13')]===_0x7a23a9){_0x5c0e12(null,!![]);}else{_0x5c0e12(null,![]);}});},'makeSalt':function(_0x7892c2,_0x4ab90b){var _0x25c652=0x10;if(typeof arguments[0x0]==='function'){_0x4ab90b=arguments[0x0];_0x7892c2=_0x25c652;}else if(typeof arguments[0x1]===_0xd130('0x3b')){_0x4ab90b=arguments[0x1];}else{throw new Error(_0xd130('0x3c'));}if(!_0x7892c2){_0x7892c2=_0x25c652;}return crypto['randomBytes'](_0x7892c2,function(_0x49a5d0,_0x2f4aee){if(_0x49a5d0){_0x4ab90b(_0x49a5d0);}return _0x4ab90b(null,_0x2f4aee[_0xd130('0x3d')](_0xd130('0x3e')));});},'encryptPassword':function(_0x14670f,_0x54f406){if(!_0x14670f||!this[_0xd130('0x3f')]){return _0x54f406?_0x54f406(null):null;}var _0xaa2401=0x2710;var _0x6eb13b=0x40;var _0x4dcd23=new Buffer(this[_0xd130('0x3f')],_0xd130('0x3e'));if(!_0x54f406){return crypto[_0xd130('0x40')](_0x14670f,_0x4dcd23,_0xaa2401,_0x6eb13b,'sha1')[_0xd130('0x3d')](_0xd130('0x3e'));}return crypto[_0xd130('0x41')](_0x14670f,_0x4dcd23,_0xaa2401,_0x6eb13b,'sha1',function(_0x687017,_0x395ffd){if(_0x687017){_0x54f406(_0x687017);}return _0x54f406(null,_0x395ffd['toString']('base64'));});},'updatePassword':function(_0x209eb5){if(!this[_0xd130('0x13')]){return _0x209eb5(null);}if(!validatePresenceOf(this[_0xd130('0x13')])&&authTypes[_0xd130('0x42')](this[_0xd130('0x43')])===-0x1){_0x209eb5(new Error(_0xd130('0x44')));}var _0xe7181e=this;this['makeSalt'](function(_0x267c34,_0x5158a5){if(_0x267c34){return _0x209eb5(_0x267c34);}_0xe7181e[_0xd130('0x3f')]=_0x5158a5;_0xe7181e[_0xd130('0x3a')](_0xe7181e[_0xd130('0x13')],function(_0x5c2c69,_0x8c2cc8){if(_0x5c2c69){_0x209eb5(_0x5c2c69);}_0xe7181e[_0xd130('0x13')]=_0x8c2cc8;_0x209eb5(null);});});},'updateMd5Password':function(){this[_0xd130('0x45')]=md5(this[_0xd130('0x16')]+':asterisk:'+this[_0xd130('0x13')]);return this[_0xd130('0x45')];}}});};