Built motion from commit (unavailable).|2.3.1
[motion2.git] / server / api / authLocal / authLocal.controller.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 _0xc7da=['agents','Maximum\x20login\x20has\x20been\x20reached','catch','find','user','name','This\x20name\x20is\x20not\x20registered','This\x20password\x20is\x20not\x20correct','MailAccount','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','auth','format','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','login','authenticate','local','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','http://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','password','resetPasswordExpires','Password\x20reset!','use','util','passport','passport-local','Strategy','bluebird','jayson/promise','lodash','../../config/logger','api','randomstring','../../mysqldb','../../components/auth/service','signToken','client','http','role','User','agent','../../config/license/util','getLicense','then'];(function(_0x4a350a,_0x5b65b1){var _0x1fdf5b=function(_0x2e1ce7){while(--_0x2e1ce7){_0x4a350a['push'](_0x4a350a['shift']());}};_0x1fdf5b(++_0x5b65b1);}(_0xc7da,0x16c));var _0xac7d=function(_0x52ecee,_0x386abe){_0x52ecee=_0x52ecee-0x0;var _0x381513=_0xc7da[_0x52ecee];return _0x381513;};'use strict';var util=require(_0xac7d('0x0'));var passport=require(_0xac7d('0x1'));var LocalStrategy=require(_0xac7d('0x2'))[_0xac7d('0x3')];var BPromise=require(_0xac7d('0x4'));var jayson=require(_0xac7d('0x5'));var _=require(_0xac7d('0x6'));var logger=require(_0xac7d('0x7'))(_0xac7d('0x8'));var rs=require(_0xac7d('0x9'));var db=require(_0xac7d('0xa'))['db'];var signToken=require(_0xac7d('0xb'))[_0xac7d('0xc')];var client=jayson[_0xac7d('0xd')][_0xac7d('0xe')]({'port':0x232b});var getLicense=function(_0x35e356){return new BPromise(function(_0x274a0a,_0x4010f3){var _0x1d9958=0x0;_0x35e356[_0xac7d('0xf')]!=='agent'&&_0x274a0a(_0x35e356);return db[_0xac7d('0x10')]['count']({'where':{'role':_0xac7d('0x11'),'online':!![],'id':{'$ne':_0x35e356['id']}}})['then'](function(_0x5c9045){_0x1d9958=_0x5c9045;return require(_0xac7d('0x12'))[_0xac7d('0x13')]();})[_0xac7d('0x14')](function(_0x4abe18){if(_0x4abe18&&_0x4abe18[_0xac7d('0x15')]&&_0x1d9958>=_0x4abe18[_0xac7d('0x15')]){return _0x4010f3({'message':_0xac7d('0x16')});}return _0x274a0a(_0x35e356);})[_0xac7d('0x17')](function(_0x43c854){return _0x4010f3(_0x43c854);});});};function localAuthenticate(_0x2c97af,_0x15a0fe,_0x5c94a4,_0x202ba9){_0x2c97af[_0xac7d('0x18')]({'where':{'name':_0x15a0fe,'role':{'$or':['admin',_0xac7d('0x19'),_0xac7d('0x11')]}}})[_0xac7d('0x14')](function(_0x183e12){if(!_0x183e12||_0x183e12&&_0x183e12[_0xac7d('0x1a')]!==_0x15a0fe){return _0x202ba9(null,![],{'message':_0xac7d('0x1b')});}return getLicense(_0x183e12);})['then'](function(_0x3176de){_0x3176de['authenticate'](_0x5c94a4,function(_0x3c339b,_0x43a538){if(_0x3c339b){return _0x202ba9(_0x3c339b);}if(!_0x43a538){return _0x202ba9(null,![],{'message':_0xac7d('0x1c')});}else{return _0x202ba9(null,_0x3176de);}});})[_0xac7d('0x17')](function(_0x3f338f){_0x202ba9(_0x3f338f);});}function sendServiceMail(_0x3cda2f){return db[_0xac7d('0x1d')]['find']({'where':{'service':!![]},'attributes':['id',_0xac7d('0x1a'),_0xac7d('0x1e')],'include':[{'model':db[_0xac7d('0x1f')],'as':'Smtp'}]})[_0xac7d('0x14')](function(_0x16d7a2){if(!_0x16d7a2){throw new Error(_0xac7d('0x20'));}var _0x450772={'tls':{'rejectUnauthorized':![]}};if(_0x16d7a2[_0xac7d('0x21')][_0xac7d('0x22')]){_0x450772['service']=_0x16d7a2['Smtp'][_0xac7d('0x22')];}else{_0x450772[_0xac7d('0x23')]=_0x16d7a2['Smtp'][_0xac7d('0x23')];_0x450772[_0xac7d('0x24')]=_0x16d7a2['Smtp'][_0xac7d('0x24')];_0x450772[_0xac7d('0x25')]=_0x16d7a2[_0xac7d('0x21')][_0xac7d('0x25')];}if(_0x16d7a2[_0xac7d('0x21')][_0xac7d('0x26')]){_0x450772[_0xac7d('0x27')]={'user':_0x16d7a2[_0xac7d('0x21')]['user'],'pass':_0x16d7a2[_0xac7d('0x21')]['pass']};}var _0x1029b3={'account':_0x450772,'message':_['merge']({'from':util[_0xac7d('0x28')]('\x22%s\x22\x20<%s>',_0x16d7a2[_0xac7d('0x1a')],_0x16d7a2[_0xac7d('0x1e')]||_0x16d7a2[_0xac7d('0x21')][_0xac7d('0x19')])},_0x3cda2f)};return client['request'](_0xac7d('0x29'),_0x1029b3);})[_0xac7d('0x14')](function(_0x1f33d7){if(_0x1f33d7['error']){throw new Error(util[_0xac7d('0x28')](_0xac7d('0x2a'),_0x1f33d7[_0xac7d('0x2b')][_0xac7d('0x2c')]||JSON[_0xac7d('0x2d')](_0x1f33d7[_0xac7d('0x2b')])));}return!![];});}function handleError(_0x23a1f0,_0x19010d,_0x1877c3){return _0x23a1f0[_0xac7d('0x2e')](_0x19010d||0x1f4)[_0xac7d('0x2f')]({'message':_0x1877c3?_0x1877c3[_0xac7d('0x2c')]||_0x1877c3:''});}exports[_0xac7d('0x30')]=function(_0xdc9214,_0xfc489a,_0x217c19){passport[_0xac7d('0x31')](_0xac7d('0x32'),function(_0x57694f,_0x377303,_0x513a31){var _0x1a7c23=_0x57694f||_0x513a31;if(_0x1a7c23){return handleError(_0xfc489a,0x191,_0x1a7c23);}if(!_0x377303){return handleError(_0xfc489a,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}var _0x307a1b=signToken(_0x377303['id'],_0x377303[_0xac7d('0xf')]);_0xfc489a[_0xac7d('0x33')]({'id':_0x377303['id'],'token':_0x307a1b,'statusCall':'','isAlreadyLogged':_0x377303[_0xac7d('0x34')]});})(_0xdc9214,_0xfc489a,_0x217c19);};exports[_0xac7d('0x35')]=function(_0x5a4091,_0x550403,_0x303a1f){if(!_0x5a4091[_0xac7d('0x36')][_0xac7d('0x1e')]){return handleError(_0x550403,0x1f4,{'message':_0xac7d('0x37')});}var _0x168562=rs[_0xac7d('0x38')]();_0x5a4091[_0xac7d('0x36')][_0xac7d('0x1e')]=_0x5a4091[_0xac7d('0x36')][_0xac7d('0x1e')][_0xac7d('0x39')]()[_0xac7d('0x3a')]();return db[_0xac7d('0x10')][_0xac7d('0x18')]({'where':{'email':_0x5a4091[_0xac7d('0x36')][_0xac7d('0x1e')]}})[_0xac7d('0x14')](function(_0x3267da){if(!_0x3267da){throw new Error(_0xac7d('0x3b'));}_0x3267da[_0xac7d('0x3c')]=_0x168562;_0x3267da['resetPasswordExpires']=Date[_0xac7d('0x3d')]()+0x36ee80;return _0x3267da[_0xac7d('0x3e')]();})[_0xac7d('0x14')](function(){return sendServiceMail({'to':_0x5a4091[_0xac7d('0x36')][_0xac7d('0x1e')],'subject':_0xac7d('0x3f'),'text':_0xac7d('0x40')+_0xac7d('0x41')+_0xac7d('0x42')+_0x5a4091['headers']['host']+_0xac7d('0x43')+_0x168562+'\x0a\x0a'+_0xac7d('0x44')});})['then'](function(){_0x550403[_0xac7d('0x2e')](0xc8)['send']({'message':'Reset\x20Email\x20sent!'});})[_0xac7d('0x17')](function(_0x5a8a6f){return handleError(_0x550403,0x1f4,_0x5a8a6f);});};exports[_0xac7d('0x45')]=function(_0x546bec,_0x165d97,_0x2bca29){return db[_0xac7d('0x10')][_0xac7d('0x18')]({'where':{'resetPasswordToken':_0x546bec[_0xac7d('0x46')][_0xac7d('0x47')],'resetPasswordExpires':{'$gt':Date[_0xac7d('0x3d')]()}}})[_0xac7d('0x14')](function(_0xf496ff){if(!_0xf496ff){throw new Error(_0xac7d('0x48'));}_0xf496ff['password']=_0x546bec[_0xac7d('0x36')][_0xac7d('0x49')];_0xf496ff[_0xac7d('0x3c')]=null;_0xf496ff[_0xac7d('0x4a')]=null;return _0xf496ff[_0xac7d('0x3e')]();})[_0xac7d('0x14')](function(){_0x165d97[_0xac7d('0x2e')](0xc8)[_0xac7d('0x2f')]({'message':_0xac7d('0x4b')});})[_0xac7d('0x17')](function(_0x6f4cfa){return handleError(_0x165d97,0x1f4,_0x6f4cfa);});};passport[_0xac7d('0x4c')](new LocalStrategy({'usernameField':_0xac7d('0x1a'),'passwordField':_0xac7d('0x49')},function(_0x184a64,_0x226c14,_0x255614){return localAuthenticate(db[_0xac7d('0x10')],_0x184a64,_0x226c14,_0x255614);}));