Built motion from commit 06eb8eb0.|2.6.31
[motion2.git] / server / api / authActiveDirectory / authActiveDirectory.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 _0x095d=['../../mysqldb','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','role','blocked','blockedAt','online','admin','user','agent','domain','blockDuration','add','clearBlockUser','getLicense','status','send','message','login','ad-login','signToken','json','User','Strategy','activedirectory2','bluebird','util'];(function(_0x2ccb36,_0x1ae845){var _0x273535=function(_0x2713c9){while(--_0x2713c9){_0x2ccb36['push'](_0x2ccb36['shift']());}};_0x273535(++_0x1ae845);}(_0x095d,0xdd));var _0xd095=function(_0x5216e0,_0x4f8cb9){_0x5216e0=_0x5216e0-0x0;var _0x5b3f40=_0x095d[_0x5216e0];return _0x5b3f40;};'use strict';var passport=require('passport');var LocalStrategy=require('passport-local')[_0xd095('0x0')];var moment=require('moment');var ActiveDirectory=require(_0xd095('0x1'));var BPromise=require(_0xd095('0x2'));var util=require(_0xd095('0x3'));var db=require(_0xd095('0x4'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xd095('0x5'));var config=require(_0xd095('0x6'));var logger=require(_0xd095('0x7'))(_0xd095('0x8'));function isActiveDirectoryConfigured(_0x392bde){var _0x335fc8=![];if(typeof _0x392bde[_0xd095('0x9')]!==_0xd095('0xa')){_0x335fc8=_0x392bde[_0xd095('0x9')][_0xd095('0xb')]&&_0x392bde[_0xd095('0x9')]['url']&&_0x392bde[_0xd095('0x9')]['domain'];}return _0x335fc8;}function adAuthenticate(_0x3cd0d9,_0x4b1207,_0x93a97b){return new BPromise(function(_0x17c744,_0x2834b8){try{var _0x2ee5f7=new ActiveDirectory(_0x3cd0d9);_0x2ee5f7[_0xd095('0xc')](_0x4b1207,_0x93a97b,function(_0x1c4089,_0x4ee079){if(_0x1c4089){logger[_0xd095('0xd')](_0xd095('0xe'),_0x4b1207,util[_0xd095('0xf')](_0x1c4089,{'showHidden':![],'depth':null}));_0x2834b8(_0xd095('0x10'));}else if(!_0x4ee079){logger['error'](_0xd095('0x11'),_0x4b1207);_0x2834b8('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x17c744(_0x4ee079);}});}catch(_0x10c276){_0x2834b8(_0x10c276);}});}function ActiveDirectoryAuthenticate(_0x1dcfde,_0x145637,_0x5973ae,_0x40390f){var _0x521793,_0x5e08d1;if(!isActiveDirectoryConfigured(config)){logger[_0xd095('0xd')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x145637);return _0x40390f(null,![],{'message':_0xd095('0x10')});}return db[_0xd095('0x12')][_0xd095('0x13')]({'where':{'id':0x1},'attributes':[_0xd095('0x14'),'blockDuration'],'raw':!![]})[_0xd095('0x15')](function(_0x2606fd){_0x521793=_0x2606fd;if(!_0x521793[_0xd095('0x14')]){logger[_0xd095('0xd')](_0xd095('0x16'),_0x145637);throw new Error(_0xd095('0x10'));}return _0x1dcfde[_0xd095('0x13')]({'attributes':['id',_0xd095('0x17'),_0xd095('0x18'),'salt',_0xd095('0x19'),'disabled',_0xd095('0x1a'),_0xd095('0x1b'),_0xd095('0x1c')],'where':{'name':_0x145637,'role':{'$or':[_0xd095('0x1d'),_0xd095('0x1e'),_0xd095('0x1f')]},'adSsoEnabled':!![]}});})[_0xd095('0x15')](function(_0x6384d){if(!_0x6384d||_0x6384d&&_0x6384d[_0xd095('0x17')]!==_0x145637){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x5e08d1=_0x6384d;var _0x44001b=_0x5e08d1[_0xd095('0x17')]+'@'+config['activedirectory'][_0xd095('0x20')];return adAuthenticate(config['activedirectory'],_0x44001b,_0x5973ae);})[_0xd095('0x15')](function(_0x22c7ec){if(_0x5e08d1['disabled']){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x521793[_0xd095('0x21')]>0x0){if(_0x5e08d1[_0xd095('0x1a')]){if(moment(_0x5e08d1['blockedAt'])[_0xd095('0x22')](_0x521793[_0xd095('0x21')],'minutes')>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0xd095('0x23')](_0x5e08d1,0x0,![],null)[_0xd095('0x15')](function(){return utils['getLicense'](_0x5e08d1);})[_0xd095('0x15')](function(){return _0x40390f(null,_0x5e08d1);});}else{return utils[_0xd095('0x24')](_0x5e08d1)[_0xd095('0x15')](function(){return _0x40390f(null,_0x5e08d1);});}}else{return utils[_0xd095('0x24')](_0x5e08d1)['then'](function(){return _0x40390f(null,_0x5e08d1);});}})['catch'](function(_0x213e38){return _0x40390f(null,![],_0x213e38);});}function handleError(_0x456215,_0x1125cf,_0x1ba3af){return _0x456215[_0xd095('0x25')](_0x1125cf||0x1f4)[_0xd095('0x26')]({'message':_0x1ba3af?_0x1ba3af[_0xd095('0x27')]||_0x1ba3af:''});}exports[_0xd095('0x28')]=function(_0x54a170,_0x148096,_0x33ebb4){passport[_0xd095('0xc')](_0xd095('0x29'),function(_0x4ba1a6,_0x57860f,_0x11f4bd){var _0x516eaa=_0x4ba1a6||_0x11f4bd;if(_0x516eaa){return handleError(_0x148096,0x191,_0x516eaa);}if(!_0x57860f){return handleError(_0x148096,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x3da2e2={'payload':{'id':_0x57860f['id'],'role':_0x57860f[_0xd095('0x19')]},'options':{'expiresIn':0x15180}};return authService[_0xd095('0x2a')](_0x3da2e2)['then'](function(_0x1bcc2a){_0x148096[_0xd095('0x2b')]({'id':_0x57860f['id'],'token':_0x1bcc2a,'statusCall':'','isAlreadyLogged':_0x57860f[_0xd095('0x1c')]});});}})(_0x54a170,_0x148096,_0x33ebb4);};passport['use'](_0xd095('0x29'),new LocalStrategy({'usernameField':_0xd095('0x17'),'passwordField':_0xd095('0x18')},function(_0x45b1f0,_0x4aac55,_0x5e777f){return ActiveDirectoryAuthenticate(db[_0xd095('0x2c')],_0x45b1f0,_0x4aac55,_0x5e777f);}));