Built motion from commit (unavailable).|2.2.0
[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 _0x2c0c=['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://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','use','password','passport','passport-local','Strategy','bluebird','jayson/promise','lodash','../../config/logger','api','randomstring','../../mysqldb','../../components/auth/service','signToken','User','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','find','admin','name','This\x20name\x20is\x20not\x20registered','authenticate','This\x20password\x20is\x20not\x20correct','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','user','pass','merge','format','request','SendMail','error','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','This\x20email\x20is\x20not\x20registered.','resetPasswordToken','resetPasswordExpires','now'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2c0c,0x1cb));var _0xc2c0=function(_0x584291,_0x24b5b3){_0x584291=_0x584291-0x0;var _0x4e7d08=_0x2c0c[_0x584291];return _0x4e7d08;};'use strict';var util=require('util');var passport=require(_0xc2c0('0x0'));var LocalStrategy=require(_0xc2c0('0x1'))[_0xc2c0('0x2')];var BPromise=require(_0xc2c0('0x3'));var jayson=require(_0xc2c0('0x4'));var _=require(_0xc2c0('0x5'));var logger=require(_0xc2c0('0x6'))(_0xc2c0('0x7'));var rs=require(_0xc2c0('0x8'));var db=require(_0xc2c0('0x9'))['db'];var signToken=require(_0xc2c0('0xa'))[_0xc2c0('0xb')];var client=jayson['client']['http']({'port':0x232b});var getLicense=function(_0x363e2b){return new BPromise(function(_0x5d160f,_0x2be73c){var _0x117817=0x0;_0x363e2b['role']!=='agent'&&_0x5d160f(_0x363e2b);return db[_0xc2c0('0xc')][_0xc2c0('0xd')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x363e2b['id']}}})[_0xc2c0('0xe')](function(_0x24e5aa){_0x117817=_0x24e5aa;return require('../../config/license/util')[_0xc2c0('0xf')]();})[_0xc2c0('0xe')](function(_0x5d131d){if(_0x5d131d&&_0x5d131d[_0xc2c0('0x10')]&&_0x117817>=_0x5d131d[_0xc2c0('0x10')]){return _0x2be73c({'message':_0xc2c0('0x11')});}return _0x5d160f(_0x363e2b);})[_0xc2c0('0x12')](function(_0x399765){return _0x2be73c(_0x399765);});});};function localAuthenticate(_0x415cce,_0x20dc0a,_0x5402b7,_0x56aa87){_0x415cce[_0xc2c0('0x13')]({'where':{'name':_0x20dc0a,'role':{'$or':[_0xc2c0('0x14'),'user','agent']}}})[_0xc2c0('0xe')](function(_0x2f431){if(!_0x2f431||_0x2f431&&_0x2f431[_0xc2c0('0x15')]!==_0x20dc0a){return _0x56aa87(null,![],{'message':_0xc2c0('0x16')});}return getLicense(_0x2f431);})[_0xc2c0('0xe')](function(_0x5bb598){_0x5bb598[_0xc2c0('0x17')](_0x5402b7,function(_0x3ae763,_0x360e51){if(_0x3ae763){return _0x56aa87(_0x3ae763);}if(!_0x360e51){return _0x56aa87(null,![],{'message':_0xc2c0('0x18')});}else{return _0x56aa87(null,_0x5bb598);}});})['catch'](function(_0x21d213){_0x56aa87(_0x21d213);});}function sendServiceMail(_0x26a7a4){return db[_0xc2c0('0x19')]['find']({'where':{'service':!![]},'attributes':['id',_0xc2c0('0x15'),_0xc2c0('0x1a')],'include':[{'model':db[_0xc2c0('0x1b')],'as':_0xc2c0('0x1c')}]})[_0xc2c0('0xe')](function(_0x53f952){if(!_0x53f952){throw new Error(_0xc2c0('0x1d'));}var _0x3a2a5d={'tls':{'rejectUnauthorized':![]}};if(_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x1e')]){_0x3a2a5d[_0xc2c0('0x1e')]=_0x53f952[_0xc2c0('0x1c')]['service'];}else{_0x3a2a5d[_0xc2c0('0x1f')]=_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x1f')];_0x3a2a5d[_0xc2c0('0x20')]=_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x20')];_0x3a2a5d[_0xc2c0('0x21')]=_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x21')];}if(_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x22')]){_0x3a2a5d[_0xc2c0('0x23')]={'user':_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x24')],'pass':_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x25')]};}var _0x263daf={'account':_0x3a2a5d,'message':_[_0xc2c0('0x26')]({'from':util[_0xc2c0('0x27')]('\x22%s\x22\x20<%s>',_0x53f952['name'],_0x53f952[_0xc2c0('0x1a')]||_0x53f952[_0xc2c0('0x1c')][_0xc2c0('0x24')])},_0x26a7a4)};return client[_0xc2c0('0x28')](_0xc2c0('0x29'),_0x263daf);})['then'](function(_0x3bc8d7){if(_0x3bc8d7[_0xc2c0('0x2a')]){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x3bc8d7[_0xc2c0('0x2a')][_0xc2c0('0x2b')]||JSON[_0xc2c0('0x2c')](_0x3bc8d7[_0xc2c0('0x2a')])));}return!![];});}function handleError(_0x4f0193,_0x1a7e8c,_0x178561){return _0x4f0193[_0xc2c0('0x2d')](_0x1a7e8c||0x1f4)[_0xc2c0('0x2e')]({'message':_0x178561?_0x178561[_0xc2c0('0x2b')]||_0x178561:''});}exports[_0xc2c0('0x2f')]=function(_0x3e002a,_0x55314f,_0x1ab160){passport[_0xc2c0('0x17')]('local',function(_0x16c7e9,_0x2a12e4,_0x5b9a51){var _0x5aaf19=_0x16c7e9||_0x5b9a51;if(_0x5aaf19){return handleError(_0x55314f,0x191,_0x5aaf19);}if(!_0x2a12e4){return handleError(_0x55314f,0x194,{'message':_0xc2c0('0x30')});}var _0x4edbc7=signToken(_0x2a12e4['id'],_0x2a12e4['role']);_0x55314f[_0xc2c0('0x31')]({'id':_0x2a12e4['id'],'token':_0x4edbc7,'statusCall':'','isAlreadyLogged':_0x2a12e4['online']});})(_0x3e002a,_0x55314f,_0x1ab160);};exports[_0xc2c0('0x32')]=function(_0x37d4af,_0x511fd2,_0x5ecfe2){if(!_0x37d4af[_0xc2c0('0x33')][_0xc2c0('0x1a')]){return handleError(_0x511fd2,0x1f4,{'message':_0xc2c0('0x34')});}var _0x57a42d=rs[_0xc2c0('0x35')]();_0x37d4af[_0xc2c0('0x33')][_0xc2c0('0x1a')]=_0x37d4af[_0xc2c0('0x33')][_0xc2c0('0x1a')]['trim']()[_0xc2c0('0x36')]();return db[_0xc2c0('0xc')]['find']({'where':{'email':_0x37d4af[_0xc2c0('0x33')][_0xc2c0('0x1a')]}})[_0xc2c0('0xe')](function(_0x22a881){if(!_0x22a881){throw new Error(_0xc2c0('0x37'));}_0x22a881[_0xc2c0('0x38')]=_0x57a42d;_0x22a881[_0xc2c0('0x39')]=Date[_0xc2c0('0x3a')]()+0x36ee80;return _0x22a881[_0xc2c0('0x3b')]();})[_0xc2c0('0xe')](function(){return sendServiceMail({'to':_0x37d4af[_0xc2c0('0x33')]['email'],'subject':_0xc2c0('0x3c'),'text':_0xc2c0('0x3d')+_0xc2c0('0x3e')+_0xc2c0('0x3f')+_0x37d4af[_0xc2c0('0x40')][_0xc2c0('0x1f')]+_0xc2c0('0x41')+_0x57a42d+'\x0a\x0a'+_0xc2c0('0x42')});})[_0xc2c0('0xe')](function(){_0x511fd2[_0xc2c0('0x2d')](0xc8)[_0xc2c0('0x2e')]({'message':_0xc2c0('0x43')});})[_0xc2c0('0x12')](function(_0x4a8617){return handleError(_0x511fd2,0x1f4,_0x4a8617);});};exports[_0xc2c0('0x44')]=function(_0x28b218,_0x50d391,_0x2b3e54){return db[_0xc2c0('0xc')][_0xc2c0('0x13')]({'where':{'resetPasswordToken':_0x28b218[_0xc2c0('0x45')][_0xc2c0('0x46')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xc2c0('0xe')](function(_0x59a349){if(!_0x59a349){throw new Error(_0xc2c0('0x47'));}_0x59a349['password']=_0x28b218[_0xc2c0('0x33')]['password'];_0x59a349[_0xc2c0('0x38')]=null;_0x59a349[_0xc2c0('0x39')]=null;return _0x59a349[_0xc2c0('0x3b')]();})[_0xc2c0('0xe')](function(){_0x50d391[_0xc2c0('0x2d')](0xc8)[_0xc2c0('0x2e')]({'message':'Password\x20reset!'});})[_0xc2c0('0x12')](function(_0x4407b8){return handleError(_0x50d391,0x1f4,_0x4407b8);});};passport[_0xc2c0('0x48')](new LocalStrategy({'usernameField':'name','passwordField':_0xc2c0('0x49')},function(_0x194435,_0x1949eb,_0x21b188){return localAuthenticate(db[_0xc2c0('0xc')],_0x194435,_0x1949eb,_0x21b188);}));