Built motion from commit f0b1811d.|2.6.6
[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 _0x2899=['Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','disabled','blocked','blockedAt','admin','user','add','minutes','clearBlockUser','getLicense','catch','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','online','use','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/logger','activedirectory','domain','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','findOne','adSsoEnabled','blockDuration','then'];(function(_0x4cf8d4,_0x5aee73){var _0x2c1beb=function(_0x39b0a4){while(--_0x39b0a4){_0x4cf8d4['push'](_0x4cf8d4['shift']());}};_0x2c1beb(++_0x5aee73);}(_0x2899,0xfe));var _0x9289=function(_0x29f791,_0xc6582f){_0x29f791=_0x29f791-0x0;var _0x5395c6=_0x2899[_0x29f791];return _0x5395c6;};'use strict';var passport=require(_0x9289('0x0'));var LocalStrategy=require(_0x9289('0x1'))[_0x9289('0x2')];var moment=require(_0x9289('0x3'));var ActiveDirectory=require(_0x9289('0x4'));var BPromise=require(_0x9289('0x5'));var util=require(_0x9289('0x6'));var db=require(_0x9289('0x7'))['db'];var authService=require(_0x9289('0x8'));var utils=require('../../config/utils');var config=require('../../config/environment');var logger=require(_0x9289('0x9'))('api');function isActiveDirectoryConfigured(_0x200897){var _0x5c6e49=![];if(typeof _0x200897['activedirectory']!=='undefined'){_0x5c6e49=_0x200897['activedirectory']['baseDN']&&_0x200897['activedirectory']['url']&&_0x200897[_0x9289('0xa')][_0x9289('0xb')];}return _0x5c6e49;}function adAuthenticate(_0x2b7e62,_0x3a5cf9,_0x337da3){return new BPromise(function(_0x4bc43e,_0x1be352){try{var _0xf1b23e=new ActiveDirectory(_0x2b7e62);_0xf1b23e[_0x9289('0xc')](_0x3a5cf9,_0x337da3,function(_0x34bb27,_0x469548){if(_0x34bb27){logger[_0x9289('0xd')](_0x9289('0xe'),_0x3a5cf9,util[_0x9289('0xf')](_0x34bb27,{'showHidden':![],'depth':null}));_0x1be352(_0x9289('0x10'));}else if(!_0x469548){logger[_0x9289('0xd')](_0x9289('0x11'),_0x3a5cf9);_0x1be352('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4bc43e(_0x469548);}});}catch(_0x3fa3e2){_0x1be352(_0x3fa3e2);}});}function ActiveDirectoryAuthenticate(_0x4ba8e0,_0x3ec5b6,_0x451b6b,_0x99533a){var _0x113a61,_0x1235ce;if(!isActiveDirectoryConfigured(config)){logger[_0x9289('0xd')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x3ec5b6);return _0x99533a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting'][_0x9289('0x12')]({'where':{'id':0x1},'attributes':[_0x9289('0x13'),_0x9289('0x14')],'raw':!![]})[_0x9289('0x15')](function(_0x1adc5a){_0x113a61=_0x1adc5a;if(!_0x113a61[_0x9289('0x13')]){logger[_0x9289('0xd')](_0x9289('0x16'),_0x3ec5b6);throw new Error(_0x9289('0x10'));}return _0x4ba8e0[_0x9289('0x12')]({'attributes':['id',_0x9289('0x17'),_0x9289('0x18'),'salt','role',_0x9289('0x19'),_0x9289('0x1a'),_0x9289('0x1b'),'online'],'where':{'name':_0x3ec5b6,'role':{'$or':[_0x9289('0x1c'),_0x9289('0x1d'),'agent']},'adSsoEnabled':!![]}});})['then'](function(_0x29c422){if(!_0x29c422||_0x29c422&&_0x29c422[_0x9289('0x17')]!==_0x3ec5b6){throw new Error(_0x9289('0x10'));}_0x1235ce=_0x29c422;var _0x6cfbd8=_0x1235ce[_0x9289('0x17')]+'@'+config[_0x9289('0xa')][_0x9289('0xb')];return adAuthenticate(config[_0x9289('0xa')],_0x6cfbd8,_0x451b6b);})[_0x9289('0x15')](function(_0x557fe0){if(_0x1235ce[_0x9289('0x19')]){throw new Error(_0x9289('0x10'));}if(_0x113a61['blockDuration']>0x0){if(_0x1235ce[_0x9289('0x1a')]){if(moment(_0x1235ce[_0x9289('0x1b')])[_0x9289('0x1e')](_0x113a61[_0x9289('0x14')],_0x9289('0x1f'))>moment()){throw new Error(_0x9289('0x10'));}return utils[_0x9289('0x20')](_0x1235ce,0x0,![],null)[_0x9289('0x15')](function(){return utils[_0x9289('0x21')](_0x1235ce);})[_0x9289('0x15')](function(){return _0x99533a(null,_0x1235ce);});}else{return utils[_0x9289('0x21')](_0x1235ce)[_0x9289('0x15')](function(){return _0x99533a(null,_0x1235ce);});}}else{return utils[_0x9289('0x21')](_0x1235ce)[_0x9289('0x15')](function(){return _0x99533a(null,_0x1235ce);});}})[_0x9289('0x22')](function(_0x166208){return _0x99533a(null,![],_0x166208);});}function handleError(_0x406a84,_0x45b90c,_0x4ca720){return _0x406a84['status'](_0x45b90c||0x1f4)[_0x9289('0x23')]({'message':_0x4ca720?_0x4ca720[_0x9289('0x24')]||_0x4ca720:''});}exports[_0x9289('0x25')]=function(_0x3c5561,_0xb37b25,_0x243c28){passport[_0x9289('0xc')](_0x9289('0x26'),function(_0x34451c,_0x54a01e,_0x3fd922){var _0x582be0=_0x34451c||_0x3fd922;if(_0x582be0){return handleError(_0xb37b25,0x191,_0x582be0);}if(!_0x54a01e){return handleError(_0xb37b25,0x194,{'message':_0x9289('0x27')});}else{var _0x578063={'payload':{'id':_0x54a01e['id'],'role':_0x54a01e[_0x9289('0x28')]},'options':{'expiresIn':0x15180}};return authService[_0x9289('0x29')](_0x578063)[_0x9289('0x15')](function(_0xcae459){_0xb37b25[_0x9289('0x2a')]({'id':_0x54a01e['id'],'token':_0xcae459,'statusCall':'','isAlreadyLogged':_0x54a01e[_0x9289('0x2b')]});});}})(_0x3c5561,_0xb37b25,_0x243c28);};passport[_0x9289('0x2c')]('ad-login',new LocalStrategy({'usernameField':'name','passwordField':_0x9289('0x18')},function(_0x396b95,_0x4b734b,_0x9beb75){return ActiveDirectoryAuthenticate(db[_0x9289('0x2d')],_0x396b95,_0x4b734b,_0x9beb75);}));