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 _0xd2e4=['bluebird','crypto','lodash','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','then','internal','exports','define','User','utf8','utf8_bin','updateMd5Password','updatePassword','changed','password','concat','VoiceExtension','bulkCreate','catch','resolve','destroy','function','randomBytes','toString','salt','base64','pbkdf2Sync','pbkdf2','sha1','indexOf','provider','Invalid\x20password','makeSalt','md5secret'];(function(_0x50af32,_0x31c2b6){var _0xc9a0a8=function(_0x4c5b22){while(--_0x4c5b22){_0x50af32['push'](_0x50af32['shift']());}};_0xc9a0a8(++_0x31c2b6);}(_0xd2e4,0x159));var _0x4d2e=function(_0x4a6c7f,_0x58fc85){_0x4a6c7f=_0x4a6c7f-0x0;var _0x538b65=_0xd2e4[_0x4a6c7f];return _0x538b65;};'use strict';var BPromise=require(_0x4d2e('0x0'));var crypto=require(_0x4d2e('0x1'));var util=require('util');var md5=require('md5');var _=require(_0x4d2e('0x2'));var attributes=require(_0x4d2e('0x3'));var authTypes=[_0x4d2e('0x4')];var validatePresenceOf=function(_0x5ed668){return _0x5ed668&&_0x5ed668[_0x4d2e('0x5')];};var getChanSpyApplications=function(_0x27852c,_0x485074,_0xb2807f){var _0x27dbed={'context':_0x27852c[_0x4d2e('0x6')]||_0x4d2e('0x7'),'type':_0x4d2e('0x8'),'isApp':![],'UserId':_0x27852c['id']};var _0x3631e8=[];for(var _0xb5943c=0x0,_0x510512=0x1;_0xb5943c<_0xb2807f[_0x4d2e('0x5')];_0xb5943c++,_0x510512=0x1){var _0x26bc14={'exten':util[_0x4d2e('0x9')](_0x4d2e('0xa'),_0xb2807f[_0xb5943c][_0x4d2e('0xb')],_0x485074),'ChanSpyId':_0xb2807f[_0xb5943c]['id']};_0x3631e8[_0x4d2e('0xc')](_[_0x4d2e('0xd')]({'app':_0x4d2e('0xe'),'appdata':util[_0x4d2e('0x9')](_0x4d2e('0xf'),_0x4d2e('0x10')),'priority':_0x510512++},_0x27dbed,_0x26bc14));if(_0xb2807f[_0xb5943c][_0x4d2e('0x11')]){_0x3631e8[_0x4d2e('0xc')](_[_0x4d2e('0xd')]({'app':_0x4d2e('0x12'),'appdata':util[_0x4d2e('0x9')](_0x4d2e('0x13'),_0xb2807f[_0xb5943c][_0x4d2e('0x14')]),'priority':_0x510512++},_0x27dbed,_0x26bc14));}if(_0xb2807f[_0xb5943c][_0x4d2e('0x15')]){_0x3631e8['push'](_[_0x4d2e('0xd')]({'app':'Authenticate','appdata':_0xb2807f[_0xb5943c]['password'],'priority':_0x510512++},_0x27dbed,_0x26bc14));}_0x3631e8[_0x4d2e('0xc')](_[_0x4d2e('0xd')]({'app':_0x4d2e('0x16'),'appdata':util[_0x4d2e('0x9')](_0x4d2e('0x17'),_0x27852c[_0x4d2e('0x18')],_0xb2807f[_0xb5943c][_0x4d2e('0x19')]?_0xb2807f[_0xb5943c][_0x4d2e('0x19')]['join'](''):''),'priority':_0x510512++},_0x27dbed,_0x26bc14));if(_0xb2807f[_0xb5943c][_0x4d2e('0x11')]){_0x3631e8[_0x4d2e('0xc')](_[_0x4d2e('0xd')]({'app':_0x4d2e('0x1a'),'priority':_0x510512++},_0x27dbed,_0x26bc14));}}return _0x3631e8;};var getUserApplications=function(_0xf8cb2d,_0x11ad8a){var _0x2fe3bf=[_0x4d2e('0x1b'),_0x4d2e('0x1c'),_0x4d2e('0x1d')];var _0x4604d7={'context':_0xf8cb2d['context']||_0x4d2e('0x7'),'exten':_0x11ad8a,'type':_0x4d2e('0x8'),'isApp':![],'UserId':_0xf8cb2d['id']};var _0x10a860=[{'app':_0x4d2e('0xe'),'appdata':_0x4d2e('0x1e')}];if(_0xf8cb2d[_0x4d2e('0x1f')]&&_[_0x4d2e('0x20')](_0x2fe3bf,_0xf8cb2d['extensionMonitor'])){_0x10a860[_0x4d2e('0xc')]({'app':_0x4d2e('0xe'),'appdata':_0x4d2e('0x21')});_0x10a860[_0x4d2e('0xc')]({'app':_0x4d2e('0xe'),'appdata':util[_0x4d2e('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0xf8cb2d[_0x4d2e('0x1f')])});_0x10a860[_0x4d2e('0xc')]({'app':_0x4d2e('0x22'),'appdata':util[_0x4d2e('0x9')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0xf8cb2d[_0x4d2e('0x18')])});}else{_0x10a860[_0x4d2e('0xc')]({'app':'Dial','appdata':util[_0x4d2e('0x9')](_0x4d2e('0x23'),_0xf8cb2d[_0x4d2e('0x18')])});}_0x10a860[_0x4d2e('0xc')]({'app':_0x4d2e('0x24')});for(var _0x2f6615=0x0;_0x2f6615<_0x10a860[_0x4d2e('0x5')];_0x2f6615++){_0x10a860[_0x2f6615][_0x4d2e('0x25')]=_0x2f6615+0x1;_0x10a860[_0x2f6615]=_['defaults'](_0x10a860[_0x2f6615],_0x4604d7);}return _0x10a860;};var getChanSpyPromise=function(_0x34722a,_0x54c908){return new BPromise(function(_0x33f864,_0x45e07e){return _0x34722a[_0x4d2e('0x26')]['findAll']()[_0x4d2e('0x27')](function(_0x33ad12){if(_0x33ad12){var _0x205723=getChanSpyApplications(_0x54c908,_0x54c908['internal'],_0x33ad12);if(_0x54c908[_0x4d2e('0x28')]!=_0x54c908[_0x4d2e('0x18')]){_0x205723=_0x205723['concat'](getChanSpyApplications(_0x54c908,_0x54c908[_0x4d2e('0x18')],_0x33ad12));}return _0x33f864(_0x205723);}return _0x33f864([]);})['catch'](function(_0x14cc01){_0x45e07e(_0x14cc01);});});};module[_0x4d2e('0x29')]=function(_0x36ca14,_0x1ee172){var _0x90ba50=_0x36ca14['models'];return _0x36ca14[_0x4d2e('0x2a')](_0x4d2e('0x2b'),attributes,{'tableName':'users','charset':_0x4d2e('0x2c'),'collate':_0x4d2e('0x2d'),'hooks':{'beforeCreate':function(_0x165e55,_0x1f4807,_0x4464fc){_0x165e55[_0x4d2e('0x2e')]();_0x165e55[_0x4d2e('0x2f')](_0x4464fc);},'beforeUpdate':function(_0x838cb4,_0x274cca,_0x177c59){if(_0x838cb4[_0x4d2e('0x30')](_0x4d2e('0x31'))){_0x838cb4[_0x4d2e('0x2e')]();return _0x838cb4[_0x4d2e('0x2f')](_0x177c59);}_0x177c59();},'afterCreate':function(_0x480e7d,_0x118b33,_0x50d915){var _0x42debd=getUserApplications(_0x480e7d,_0x480e7d[_0x4d2e('0x28')]);if(_0x480e7d[_0x4d2e('0x28')]!=_0x480e7d[_0x4d2e('0x18')]){_0x42debd=_0x42debd[_0x4d2e('0x32')](getUserApplications(_0x480e7d,_0x480e7d[_0x4d2e('0x18')]));}return _0x90ba50['VoiceExtension']['bulkCreate'](_0x42debd)['then'](function(){if(_0x480e7d['chanspy']){return getChanSpyPromise(_0x90ba50,_0x480e7d);}})['then'](function(_0x40c4d6){if(_0x40c4d6&&_0x40c4d6[_0x4d2e('0x5')]){return _0x90ba50[_0x4d2e('0x33')][_0x4d2e('0x34')](_0x40c4d6);}})['then'](function(){_0x50d915();})[_0x4d2e('0x35')](function(_0x124a75){_0x50d915(_0x124a75);});},'afterUpdate':function(_0x44a75d,_0x1d3382,_0x29a66d){return BPromise[_0x4d2e('0x36')]()[_0x4d2e('0x27')](function(){if(_0x44a75d[_0x4d2e('0x30')]('chanspy')||_0x44a75d[_0x4d2e('0x30')](_0x4d2e('0x6'))){return _0x90ba50[_0x4d2e('0x33')][_0x4d2e('0x37')]({'where':{'UserId':_0x44a75d['id'],'type':_0x4d2e('0x8'),'ChanSpyId':{'$ne':null}}})[_0x4d2e('0x27')](function(){if(_0x44a75d['chanspy']){return getChanSpyPromise(_0x90ba50,_0x44a75d)['then'](function(_0x3456f2){if(_0x3456f2&&_0x3456f2[_0x4d2e('0x5')]){return _0x90ba50[_0x4d2e('0x33')][_0x4d2e('0x34')](_0x3456f2);}});}});}})[_0x4d2e('0x27')](function(){if(_0x44a75d[_0x4d2e('0x30')](_0x4d2e('0x1f'))||_0x44a75d[_0x4d2e('0x30')]('context')){return _0x90ba50['VoiceExtension'][_0x4d2e('0x37')]({'where':{'UserId':_0x44a75d['id'],'type':_0x4d2e('0x8'),'ChanSpyId':null}})['then'](function(){var _0x4adf53=getUserApplications(_0x44a75d,_0x44a75d[_0x4d2e('0x28')]);if(_0x44a75d[_0x4d2e('0x28')]!=_0x44a75d[_0x4d2e('0x18')]){_0x4adf53=_0x4adf53['concat'](getUserApplications(_0x44a75d,_0x44a75d['name']));}return _0x90ba50[_0x4d2e('0x33')]['bulkCreate'](_0x4adf53);});}})[_0x4d2e('0x27')](function(){_0x29a66d();})[_0x4d2e('0x35')](function(_0x3ee63e){_0x29a66d(_0x3ee63e);});},'afterDestroy':function(_0x5348e7,_0x3559cb){return _0x90ba50[_0x4d2e('0x33')]['destroy']({'where':{'UserId':_0x5348e7['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x513a3e,_0xaad4b4){if(!_0xaad4b4){return this[_0x4d2e('0x31')]===this['encryptPassword'](_0x513a3e);}var _0x5ad1b8=this;this['encryptPassword'](_0x513a3e,function(_0x324f3c,_0x593c16){if(_0x324f3c){_0xaad4b4(_0x324f3c);}if(_0x5ad1b8[_0x4d2e('0x31')]===_0x593c16){_0xaad4b4(null,!![]);}else{_0xaad4b4(null,![]);}});},'makeSalt':function(_0x46476c,_0x247124){var _0x5842c6=0x10;if(typeof arguments[0x0]==='function'){_0x247124=arguments[0x0];_0x46476c=_0x5842c6;}else if(typeof arguments[0x1]===_0x4d2e('0x38')){_0x247124=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x46476c){_0x46476c=_0x5842c6;}return crypto[_0x4d2e('0x39')](_0x46476c,function(_0x54d4b3,_0x25785d){if(_0x54d4b3){_0x247124(_0x54d4b3);}return _0x247124(null,_0x25785d[_0x4d2e('0x3a')]('base64'));});},'encryptPassword':function(_0x41a6eb,_0x4307bb){if(!_0x41a6eb||!this[_0x4d2e('0x3b')]){return _0x4307bb?_0x4307bb(null):null;}var _0xfe7ab1=0x2710;var _0x1ee287=0x40;var _0x4a5767=new Buffer(this[_0x4d2e('0x3b')],_0x4d2e('0x3c'));if(!_0x4307bb){return crypto[_0x4d2e('0x3d')](_0x41a6eb,_0x4a5767,_0xfe7ab1,_0x1ee287,'sha1')['toString']('base64');}return crypto[_0x4d2e('0x3e')](_0x41a6eb,_0x4a5767,_0xfe7ab1,_0x1ee287,_0x4d2e('0x3f'),function(_0x217d18,_0xa385eb){if(_0x217d18){_0x4307bb(_0x217d18);}return _0x4307bb(null,_0xa385eb[_0x4d2e('0x3a')](_0x4d2e('0x3c')));});},'updatePassword':function(_0x57c2c2){if(!this[_0x4d2e('0x31')]){return _0x57c2c2(null);}if(!validatePresenceOf(this[_0x4d2e('0x31')])&&authTypes[_0x4d2e('0x40')](this[_0x4d2e('0x41')])===-0x1){_0x57c2c2(new Error(_0x4d2e('0x42')));}var _0x3b31d1=this;this[_0x4d2e('0x43')](function(_0x5f5168,_0x2cfeee){if(_0x5f5168){return _0x57c2c2(_0x5f5168);}_0x3b31d1[_0x4d2e('0x3b')]=_0x2cfeee;_0x3b31d1['encryptPassword'](_0x3b31d1['password'],function(_0x572fac,_0x3f6b43){if(_0x572fac){_0x57c2c2(_0x572fac);}_0x3b31d1['password']=_0x3f6b43;_0x57c2c2(null);});});},'updateMd5Password':function(){this[_0x4d2e('0x44')]=md5(this[_0x4d2e('0x18')]+':asterisk:'+this['password']);return this[_0x4d2e('0x44')];}}});};