af21a2a6f06f6c4df1eddca2bd8425094f5323c7
[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 _0x6141=['CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','internal','concat','catch','define','users','utf8','updatePassword','changed','VoiceExtension','bulkCreate','then','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','indexOf','provider','makeSalt','md5secret','bluebird','crypto','md5','./user.attributes','google','length','context','from-sip','system','prefix','format','CDR(type)=%s','chanspy','push','merge','MixMonitor','${UNIQUEID}.%s,ab','password','ChanSpy','SIP/%s,%s','name','options','record','StopMixMonitor','WAV','gsm','Set'];(function(_0x5329f1,_0x18f76f){var _0x1ffd40=function(_0x39a492){while(--_0x39a492){_0x5329f1['push'](_0x5329f1['shift']());}};_0x1ffd40(++_0x18f76f);}(_0x6141,0x1dd));var _0x1614=function(_0x57a110,_0x1f0336){_0x57a110=_0x57a110-0x0;var _0x140454=_0x6141[_0x57a110];return _0x140454;};'use strict';var BPromise=require(_0x1614('0x0'));var crypto=require(_0x1614('0x1'));var util=require('util');var md5=require(_0x1614('0x2'));var _=require('lodash');var attributes=require(_0x1614('0x3'));var authTypes=[_0x1614('0x4')];var validatePresenceOf=function(_0x5f2cf6){return _0x5f2cf6&&_0x5f2cf6[_0x1614('0x5')];};var getChanSpyApplications=function(_0x82dcf5,_0x4b8c2a,_0x3a152e){var _0x5669e4={'context':_0x82dcf5[_0x1614('0x6')]||_0x1614('0x7'),'type':_0x1614('0x8'),'isApp':![],'UserId':_0x82dcf5['id']};var _0x520457=[];for(var _0x405dee=0x0,_0x58b823=0x1;_0x405dee<_0x3a152e[_0x1614('0x5')];_0x405dee++,_0x58b823=0x1){var _0x3f8b2b={'exten':util['format']('%s%s',_0x3a152e[_0x405dee][_0x1614('0x9')],_0x4b8c2a),'ChanSpyId':_0x3a152e[_0x405dee]['id']};_0x520457['push'](_['merge']({'app':'Set','appdata':util[_0x1614('0xa')](_0x1614('0xb'),_0x1614('0xc')),'priority':_0x58b823++},_0x5669e4,_0x3f8b2b));if(_0x3a152e[_0x405dee]['record']){_0x520457[_0x1614('0xd')](_[_0x1614('0xe')]({'app':_0x1614('0xf'),'appdata':util[_0x1614('0xa')](_0x1614('0x10'),_0x3a152e[_0x405dee]['recordingFormat']),'priority':_0x58b823++},_0x5669e4,_0x3f8b2b));}if(_0x3a152e[_0x405dee]['auth']){_0x520457[_0x1614('0xd')](_[_0x1614('0xe')]({'app':'Authenticate','appdata':_0x3a152e[_0x405dee][_0x1614('0x11')],'priority':_0x58b823++},_0x5669e4,_0x3f8b2b));}_0x520457[_0x1614('0xd')](_['merge']({'app':_0x1614('0x12'),'appdata':util[_0x1614('0xa')](_0x1614('0x13'),_0x82dcf5[_0x1614('0x14')],_0x3a152e[_0x405dee][_0x1614('0x15')]?_0x3a152e[_0x405dee][_0x1614('0x15')]['join'](''):''),'priority':_0x58b823++},_0x5669e4,_0x3f8b2b));if(_0x3a152e[_0x405dee][_0x1614('0x16')]){_0x520457[_0x1614('0xd')](_[_0x1614('0xe')]({'app':_0x1614('0x17'),'priority':_0x58b823++},_0x5669e4,_0x3f8b2b));}}return _0x520457;};var getUserApplications=function(_0x189c03,_0xe5c6eb){var _0xda6cd3=['wav',_0x1614('0x18'),_0x1614('0x19')];var _0x482fcf={'context':_0x189c03['context']||'from-sip','exten':_0xe5c6eb,'type':_0x1614('0x8'),'isApp':![],'UserId':_0x189c03['id']};var _0x56680d=[{'app':_0x1614('0x1a'),'appdata':_0x1614('0x1b')}];if(_0x189c03[_0x1614('0x1c')]&&_[_0x1614('0x1d')](_0xda6cd3,_0x189c03['extensionMonitor'])){_0x56680d['push']({'app':_0x1614('0x1a'),'appdata':_0x1614('0x1e')});_0x56680d[_0x1614('0xd')]({'app':_0x1614('0x1a'),'appdata':util[_0x1614('0xa')](_0x1614('0x1f'),_0x189c03[_0x1614('0x1c')])});_0x56680d['push']({'app':'Dial','appdata':util[_0x1614('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x189c03[_0x1614('0x14')])});}else{_0x56680d[_0x1614('0xd')]({'app':'Dial','appdata':util[_0x1614('0xa')](_0x1614('0x20'),_0x189c03[_0x1614('0x14')])});}_0x56680d['push']({'app':_0x1614('0x21')});for(var _0x33f8c6=0x0;_0x33f8c6<_0x56680d[_0x1614('0x5')];_0x33f8c6++){_0x56680d[_0x33f8c6]['priority']=_0x33f8c6+0x1;_0x56680d[_0x33f8c6]=_[_0x1614('0x22')](_0x56680d[_0x33f8c6],_0x482fcf);}return _0x56680d;};var getChanSpyPromise=function(_0x31718a,_0x508791){return new BPromise(function(_0x52e58b,_0x573cc2){return _0x31718a[_0x1614('0x23')][_0x1614('0x24')]()['then'](function(_0x4b9d28){if(_0x4b9d28){var _0x20d118=getChanSpyApplications(_0x508791,_0x508791[_0x1614('0x25')],_0x4b9d28);if(_0x508791['internal']!=_0x508791['name']){_0x20d118=_0x20d118[_0x1614('0x26')](getChanSpyApplications(_0x508791,_0x508791[_0x1614('0x14')],_0x4b9d28));}return _0x52e58b(_0x20d118);}return _0x52e58b([]);})[_0x1614('0x27')](function(_0x5e93e9){_0x573cc2(_0x5e93e9);});});};module['exports']=function(_0xdfa20b,_0xb7a39f){var _0x44d63f=_0xdfa20b['models'];return _0xdfa20b[_0x1614('0x28')]('User',attributes,{'tableName':_0x1614('0x29'),'charset':_0x1614('0x2a'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x409347,_0x20d19f,_0x43c705){_0x409347['updateMd5Password']();_0x409347[_0x1614('0x2b')](_0x43c705);},'beforeUpdate':function(_0x4cc3cf,_0x934b01,_0x5a33ca){if(_0x4cc3cf[_0x1614('0x2c')](_0x1614('0x11'))){_0x4cc3cf['updateMd5Password']();return _0x4cc3cf[_0x1614('0x2b')](_0x5a33ca);}_0x5a33ca();},'afterCreate':function(_0x2f06f7,_0x37f293,_0x44bdd6){var _0x2fda32=getUserApplications(_0x2f06f7,_0x2f06f7[_0x1614('0x25')]);if(_0x2f06f7[_0x1614('0x25')]!=_0x2f06f7[_0x1614('0x14')]){_0x2fda32=_0x2fda32['concat'](getUserApplications(_0x2f06f7,_0x2f06f7[_0x1614('0x14')]));}return _0x44d63f[_0x1614('0x2d')][_0x1614('0x2e')](_0x2fda32)[_0x1614('0x2f')](function(){if(_0x2f06f7['chanspy']){return getChanSpyPromise(_0x44d63f,_0x2f06f7);}})['then'](function(_0x443f1c){if(_0x443f1c&&_0x443f1c[_0x1614('0x5')]){return _0x44d63f['VoiceExtension'][_0x1614('0x2e')](_0x443f1c);}})['then'](function(){_0x44bdd6();})[_0x1614('0x27')](function(_0x71cbe3){_0x44bdd6(_0x71cbe3);});},'afterUpdate':function(_0x1207a6,_0xc0e035,_0x9af9ae){return BPromise[_0x1614('0x30')]()[_0x1614('0x2f')](function(){if(_0x1207a6[_0x1614('0x2c')](_0x1614('0xc'))||_0x1207a6['changed'](_0x1614('0x6'))){return _0x44d63f[_0x1614('0x2d')][_0x1614('0x31')]({'where':{'UserId':_0x1207a6['id'],'type':_0x1614('0x8'),'ChanSpyId':{'$ne':null}}})[_0x1614('0x2f')](function(){if(_0x1207a6[_0x1614('0xc')]){return getChanSpyPromise(_0x44d63f,_0x1207a6)[_0x1614('0x2f')](function(_0x209e62){if(_0x209e62&&_0x209e62[_0x1614('0x5')]){return _0x44d63f[_0x1614('0x2d')][_0x1614('0x2e')](_0x209e62);}});}});}})[_0x1614('0x2f')](function(){if(_0x1207a6[_0x1614('0x2c')](_0x1614('0x1c'))||_0x1207a6[_0x1614('0x2c')]('context')){return _0x44d63f[_0x1614('0x2d')][_0x1614('0x31')]({'where':{'UserId':_0x1207a6['id'],'type':_0x1614('0x8'),'ChanSpyId':null}})[_0x1614('0x2f')](function(){var _0x50332b=getUserApplications(_0x1207a6,_0x1207a6[_0x1614('0x25')]);if(_0x1207a6[_0x1614('0x25')]!=_0x1207a6['name']){_0x50332b=_0x50332b['concat'](getUserApplications(_0x1207a6,_0x1207a6[_0x1614('0x14')]));}return _0x44d63f['VoiceExtension'][_0x1614('0x2e')](_0x50332b);});}})['then'](function(){_0x9af9ae();})[_0x1614('0x27')](function(_0x89cc90){_0x9af9ae(_0x89cc90);});},'afterDestroy':function(_0x40d77f,_0x2da1de){return _0x44d63f[_0x1614('0x2d')][_0x1614('0x31')]({'where':{'UserId':_0x40d77f['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4d0efb,_0x36abb3){if(!_0x36abb3){return this[_0x1614('0x11')]===this[_0x1614('0x32')](_0x4d0efb);}var _0x5c346b=this;this[_0x1614('0x32')](_0x4d0efb,function(_0x4094d9,_0x2de1d4){if(_0x4094d9){_0x36abb3(_0x4094d9);}if(_0x5c346b[_0x1614('0x11')]===_0x2de1d4){_0x36abb3(null,!![]);}else{_0x36abb3(null,![]);}});},'makeSalt':function(_0x2e9bc0,_0x252694){var _0x38b756=0x10;if(typeof arguments[0x0]===_0x1614('0x33')){_0x252694=arguments[0x0];_0x2e9bc0=_0x38b756;}else if(typeof arguments[0x1]===_0x1614('0x33')){_0x252694=arguments[0x1];}else{throw new Error(_0x1614('0x34'));}if(!_0x2e9bc0){_0x2e9bc0=_0x38b756;}return crypto[_0x1614('0x35')](_0x2e9bc0,function(_0x1b16c4,_0x3106b6){if(_0x1b16c4){_0x252694(_0x1b16c4);}return _0x252694(null,_0x3106b6['toString']('base64'));});},'encryptPassword':function(_0x4a6ee3,_0xba41bf){if(!_0x4a6ee3||!this[_0x1614('0x36')]){return _0xba41bf?_0xba41bf(null):null;}var _0x1f6e7d=0x2710;var _0x131e0e=0x40;var _0x2cf7cc=new Buffer(this[_0x1614('0x36')],_0x1614('0x37'));if(!_0xba41bf){return crypto[_0x1614('0x38')](_0x4a6ee3,_0x2cf7cc,_0x1f6e7d,_0x131e0e,_0x1614('0x39'))[_0x1614('0x3a')](_0x1614('0x37'));}return crypto['pbkdf2'](_0x4a6ee3,_0x2cf7cc,_0x1f6e7d,_0x131e0e,_0x1614('0x39'),function(_0x471056,_0x5d35fc){if(_0x471056){_0xba41bf(_0x471056);}return _0xba41bf(null,_0x5d35fc[_0x1614('0x3a')](_0x1614('0x37')));});},'updatePassword':function(_0x1dc503){if(!this['password']){return _0x1dc503(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x1614('0x3b')](this[_0x1614('0x3c')])===-0x1){_0x1dc503(new Error('Invalid\x20password'));}var _0x4c38c7=this;this[_0x1614('0x3d')](function(_0x1f4abc,_0x577e5a){if(_0x1f4abc){return _0x1dc503(_0x1f4abc);}_0x4c38c7[_0x1614('0x36')]=_0x577e5a;_0x4c38c7['encryptPassword'](_0x4c38c7['password'],function(_0x5387a3,_0x65d29e){if(_0x5387a3){_0x1dc503(_0x5387a3);}_0x4c38c7['password']=_0x65d29e;_0x1dc503(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+':asterisk:'+this[_0x1614('0x11')]);return this[_0x1614('0x3e')];}}});};