Built motion from commit (unavailable).|2.5.14
[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 _0x2948=['utf8_bin','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','resolve','context','destroy','concat','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2','sha1','indexOf','Invalid\x20password','crypto','lodash','./user.attributes','length','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','then','internal','catch','exports','define','User','users','utf8'];(function(_0x2bb0d5,_0x5f33c9){var _0x19f84a=function(_0x32f7fd){while(--_0x32f7fd){_0x2bb0d5['push'](_0x2bb0d5['shift']());}};_0x19f84a(++_0x5f33c9);}(_0x2948,0x1ad));var _0x8294=function(_0x6c5725,_0x5c8c00){_0x6c5725=_0x6c5725-0x0;var _0x5b5906=_0x2948[_0x6c5725];return _0x5b5906;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x8294('0x0'));var util=require('util');var md5=require('md5');var _=require(_0x8294('0x1'));var attributes=require(_0x8294('0x2'));var authTypes=['google'];var validatePresenceOf=function(_0x1f5f94){return _0x1f5f94&&_0x1f5f94[_0x8294('0x3')];};var getChanSpyApplications=function(_0x598940,_0x341499,_0x458898){var _0x46a6fd={'context':_0x598940['context']||_0x8294('0x4'),'type':_0x8294('0x5'),'isApp':![],'UserId':_0x598940['id']};var _0x245720=[];for(var _0x3dc53c=0x0,_0x13fecb=0x1;_0x3dc53c<_0x458898['length'];_0x3dc53c++,_0x13fecb=0x1){var _0x4e4633={'exten':util[_0x8294('0x6')](_0x8294('0x7'),_0x458898[_0x3dc53c][_0x8294('0x8')],_0x341499),'ChanSpyId':_0x458898[_0x3dc53c]['id']};_0x245720[_0x8294('0x9')](_[_0x8294('0xa')]({'app':_0x8294('0xb'),'appdata':util[_0x8294('0x6')](_0x8294('0xc'),_0x8294('0xd')),'priority':_0x13fecb++},_0x46a6fd,_0x4e4633));if(_0x458898[_0x3dc53c][_0x8294('0xe')]){_0x245720[_0x8294('0x9')](_[_0x8294('0xa')]({'app':_0x8294('0xf'),'appdata':util[_0x8294('0x6')](_0x8294('0x10'),_0x458898[_0x3dc53c][_0x8294('0x11')]),'priority':_0x13fecb++},_0x46a6fd,_0x4e4633));}if(_0x458898[_0x3dc53c][_0x8294('0x12')]){_0x245720[_0x8294('0x9')](_['merge']({'app':_0x8294('0x13'),'appdata':_0x458898[_0x3dc53c][_0x8294('0x14')],'priority':_0x13fecb++},_0x46a6fd,_0x4e4633));}_0x245720[_0x8294('0x9')](_['merge']({'app':_0x8294('0x15'),'appdata':util[_0x8294('0x6')](_0x8294('0x16'),_0x598940[_0x8294('0x17')],_0x458898[_0x3dc53c][_0x8294('0x18')]?_0x458898[_0x3dc53c][_0x8294('0x18')][_0x8294('0x19')](''):''),'priority':_0x13fecb++},_0x46a6fd,_0x4e4633));if(_0x458898[_0x3dc53c][_0x8294('0xe')]){_0x245720[_0x8294('0x9')](_[_0x8294('0xa')]({'app':_0x8294('0x1a'),'priority':_0x13fecb++},_0x46a6fd,_0x4e4633));}}return _0x245720;};var getUserApplications=function(_0x29de39,_0x2c4711){var _0x55e186=[_0x8294('0x1b'),'WAV',_0x8294('0x1c')];var _0x49a3c9={'context':_0x29de39['context']||_0x8294('0x4'),'exten':_0x2c4711,'type':'system','isApp':![],'UserId':_0x29de39['id']};var _0x5d3f28=[{'app':_0x8294('0xb'),'appdata':'CDR(type)=internal'}];if(_0x29de39[_0x8294('0x1d')]&&_[_0x8294('0x1e')](_0x55e186,_0x29de39[_0x8294('0x1d')])){_0x5d3f28[_0x8294('0x9')]({'app':_0x8294('0xb'),'appdata':_0x8294('0x1f')});_0x5d3f28['push']({'app':'Set','appdata':util[_0x8294('0x6')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x29de39['extensionMonitor'])});_0x5d3f28[_0x8294('0x9')]({'app':_0x8294('0x20'),'appdata':util[_0x8294('0x6')](_0x8294('0x21'),_0x29de39[_0x8294('0x17')])});}else{_0x5d3f28[_0x8294('0x9')]({'app':_0x8294('0x20'),'appdata':util[_0x8294('0x6')](_0x8294('0x22'),_0x29de39[_0x8294('0x17')])});}_0x5d3f28[_0x8294('0x9')]({'app':_0x8294('0x23')});for(var _0x7d492f=0x0;_0x7d492f<_0x5d3f28[_0x8294('0x3')];_0x7d492f++){_0x5d3f28[_0x7d492f][_0x8294('0x24')]=_0x7d492f+0x1;_0x5d3f28[_0x7d492f]=_[_0x8294('0x25')](_0x5d3f28[_0x7d492f],_0x49a3c9);}return _0x5d3f28;};var getChanSpyPromise=function(_0x4f9d13,_0x552aa5){return new BPromise(function(_0x572b7f,_0x1acdfc){return _0x4f9d13[_0x8294('0x26')]['findAll']()[_0x8294('0x27')](function(_0x5b3ea3){if(_0x5b3ea3){var _0x48535a=getChanSpyApplications(_0x552aa5,_0x552aa5['internal'],_0x5b3ea3);if(_0x552aa5[_0x8294('0x28')]!=_0x552aa5[_0x8294('0x17')]){_0x48535a=_0x48535a['concat'](getChanSpyApplications(_0x552aa5,_0x552aa5[_0x8294('0x17')],_0x5b3ea3));}return _0x572b7f(_0x48535a);}return _0x572b7f([]);})[_0x8294('0x29')](function(_0x52f3dc){_0x1acdfc(_0x52f3dc);});});};module[_0x8294('0x2a')]=function(_0x33ff9f,_0x354fef){var _0x31e798=_0x33ff9f['models'];return _0x33ff9f[_0x8294('0x2b')](_0x8294('0x2c'),attributes,{'tableName':_0x8294('0x2d'),'charset':_0x8294('0x2e'),'collate':_0x8294('0x2f'),'hooks':{'beforeCreate':function(_0x1673f7,_0x2b0aeb,_0x1f7ca4){_0x1673f7[_0x8294('0x30')]();_0x1673f7[_0x8294('0x31')](_0x1f7ca4);},'beforeUpdate':function(_0x334e09,_0x494a66,_0xd5dd30){if(_0x334e09[_0x8294('0x32')]('password')){_0x334e09[_0x8294('0x30')]();return _0x334e09['updatePassword'](_0xd5dd30);}_0xd5dd30();},'afterCreate':function(_0x22bf26,_0x5e03f4,_0x3ce7f8){var _0x5638af=getUserApplications(_0x22bf26,_0x22bf26[_0x8294('0x28')]);if(_0x22bf26[_0x8294('0x28')]!=_0x22bf26[_0x8294('0x17')]){_0x5638af=_0x5638af['concat'](getUserApplications(_0x22bf26,_0x22bf26['name']));}return _0x31e798[_0x8294('0x33')][_0x8294('0x34')](_0x5638af)[_0x8294('0x27')](function(){if(_0x22bf26['chanspy']){return getChanSpyPromise(_0x31e798,_0x22bf26);}})[_0x8294('0x27')](function(_0x2acc9e){if(_0x2acc9e&&_0x2acc9e[_0x8294('0x3')]){return _0x31e798[_0x8294('0x33')]['bulkCreate'](_0x2acc9e);}})[_0x8294('0x27')](function(){_0x3ce7f8();})[_0x8294('0x29')](function(_0x7cf5b9){_0x3ce7f8(_0x7cf5b9);});},'afterUpdate':function(_0x5ead27,_0x1d909e,_0x51d702){return BPromise[_0x8294('0x35')]()[_0x8294('0x27')](function(){if(_0x5ead27[_0x8294('0x32')](_0x8294('0xd'))||_0x5ead27[_0x8294('0x32')](_0x8294('0x36'))){return _0x31e798[_0x8294('0x33')][_0x8294('0x37')]({'where':{'UserId':_0x5ead27['id'],'type':_0x8294('0x5'),'ChanSpyId':{'$ne':null}}})[_0x8294('0x27')](function(){if(_0x5ead27[_0x8294('0xd')]){return getChanSpyPromise(_0x31e798,_0x5ead27)[_0x8294('0x27')](function(_0xc07c12){if(_0xc07c12&&_0xc07c12[_0x8294('0x3')]){return _0x31e798[_0x8294('0x33')][_0x8294('0x34')](_0xc07c12);}});}});}})['then'](function(){if(_0x5ead27[_0x8294('0x32')](_0x8294('0x1d'))||_0x5ead27[_0x8294('0x32')](_0x8294('0x36'))){return _0x31e798['VoiceExtension'][_0x8294('0x37')]({'where':{'UserId':_0x5ead27['id'],'type':_0x8294('0x5'),'ChanSpyId':null}})[_0x8294('0x27')](function(){var _0x572f9f=getUserApplications(_0x5ead27,_0x5ead27[_0x8294('0x28')]);if(_0x5ead27[_0x8294('0x28')]!=_0x5ead27[_0x8294('0x17')]){_0x572f9f=_0x572f9f[_0x8294('0x38')](getUserApplications(_0x5ead27,_0x5ead27['name']));}return _0x31e798[_0x8294('0x33')][_0x8294('0x34')](_0x572f9f);});}})['then'](function(){_0x51d702();})[_0x8294('0x29')](function(_0x47451c){_0x51d702(_0x47451c);});},'afterDestroy':function(_0x40d4eb,_0xa2d9da){return _0x31e798[_0x8294('0x33')][_0x8294('0x37')]({'where':{'UserId':_0x40d4eb['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x12517b,_0x53c087){if(!_0x53c087){return this[_0x8294('0x14')]===this[_0x8294('0x39')](_0x12517b);}var _0x2ac16c=this;this[_0x8294('0x39')](_0x12517b,function(_0x1c3e64,_0x29c5b3){if(_0x1c3e64){_0x53c087(_0x1c3e64);}if(_0x2ac16c[_0x8294('0x14')]===_0x29c5b3){_0x53c087(null,!![]);}else{_0x53c087(null,![]);}});},'makeSalt':function(_0x27e431,_0x5d817d){var _0x32597a=0x10;if(typeof arguments[0x0]===_0x8294('0x3a')){_0x5d817d=arguments[0x0];_0x27e431=_0x32597a;}else if(typeof arguments[0x1]===_0x8294('0x3a')){_0x5d817d=arguments[0x1];}else{throw new Error(_0x8294('0x3b'));}if(!_0x27e431){_0x27e431=_0x32597a;}return crypto[_0x8294('0x3c')](_0x27e431,function(_0x260e35,_0x34c607){if(_0x260e35){_0x5d817d(_0x260e35);}return _0x5d817d(null,_0x34c607[_0x8294('0x3d')](_0x8294('0x3e')));});},'encryptPassword':function(_0x1a5a8e,_0xdefa94){if(!_0x1a5a8e||!this[_0x8294('0x3f')]){return _0xdefa94?_0xdefa94(null):null;}var _0x813466=0x2710;var _0x7f58cb=0x40;var _0x5ddcc6=new Buffer(this[_0x8294('0x3f')],_0x8294('0x3e'));if(!_0xdefa94){return crypto['pbkdf2Sync'](_0x1a5a8e,_0x5ddcc6,_0x813466,_0x7f58cb,'sha1')[_0x8294('0x3d')](_0x8294('0x3e'));}return crypto[_0x8294('0x40')](_0x1a5a8e,_0x5ddcc6,_0x813466,_0x7f58cb,_0x8294('0x41'),function(_0x4ab373,_0x5b42ed){if(_0x4ab373){_0xdefa94(_0x4ab373);}return _0xdefa94(null,_0x5b42ed[_0x8294('0x3d')]('base64'));});},'updatePassword':function(_0xbd2b66){if(!this['password']){return _0xbd2b66(null);}if(!validatePresenceOf(this[_0x8294('0x14')])&&authTypes[_0x8294('0x42')](this['provider'])===-0x1){_0xbd2b66(new Error(_0x8294('0x43')));}var _0x3567e6=this;this['makeSalt'](function(_0x2c2b29,_0x2ad40a){if(_0x2c2b29){return _0xbd2b66(_0x2c2b29);}_0x3567e6['salt']=_0x2ad40a;_0x3567e6[_0x8294('0x39')](_0x3567e6[_0x8294('0x14')],function(_0x36f103,_0x207dc9){if(_0x36f103){_0xbd2b66(_0x36f103);}_0x3567e6[_0x8294('0x14')]=_0x207dc9;_0xbd2b66(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x8294('0x17')]+':asterisk:'+this['password']);return this['md5secret'];}}});};