Built motion from commit ffdca78c.|2.6.24
[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 _0x34d2=['salt','role','disabled','blocked','online','agent','blockedAt','minutes','clearBlockUser','getLicense','status','send','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','User','passport-local','bluebird','../../mysqldb','../../components/auth/service','../../config/logger','activedirectory','undefined','url','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','findOne','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password'];(function(_0x57486e,_0x32283b){var _0x5f110b=function(_0xa18fc3){while(--_0xa18fc3){_0x57486e['push'](_0x57486e['shift']());}};_0x5f110b(++_0x32283b);}(_0x34d2,0x12a));var _0x234d=function(_0x2200cd,_0x3baa04){_0x2200cd=_0x2200cd-0x0;var _0x597fc0=_0x34d2[_0x2200cd];return _0x597fc0;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x234d('0x0'))['Strategy'];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x234d('0x1'));var util=require('util');var db=require(_0x234d('0x2'))['db'];var authService=require(_0x234d('0x3'));var utils=require('../../config/utils');var config=require('../../config/environment');var logger=require(_0x234d('0x4'))('api');function isActiveDirectoryConfigured(_0x567456){var _0x31aa2c=![];if(typeof _0x567456[_0x234d('0x5')]!==_0x234d('0x6')){_0x31aa2c=_0x567456[_0x234d('0x5')]['baseDN']&&_0x567456[_0x234d('0x5')][_0x234d('0x7')]&&_0x567456[_0x234d('0x5')][_0x234d('0x8')];}return _0x31aa2c;}function adAuthenticate(_0x27c675,_0x3a2a60,_0x3179d1){return new BPromise(function(_0x4a03d6,_0x4f2eb6){try{var _0x4b1615=new ActiveDirectory(_0x27c675);_0x4b1615[_0x234d('0x9')](_0x3a2a60,_0x3179d1,function(_0x4fc098,_0x1edec9){if(_0x4fc098){logger[_0x234d('0xa')](_0x234d('0xb'),_0x3a2a60,util[_0x234d('0xc')](_0x4fc098,{'showHidden':![],'depth':null}));_0x4f2eb6('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x1edec9){logger[_0x234d('0xa')](_0x234d('0xd'),_0x3a2a60);_0x4f2eb6('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4a03d6(_0x1edec9);}});}catch(_0x3506f0){_0x4f2eb6(_0x3506f0);}});}function ActiveDirectoryAuthenticate(_0x403e55,_0x30d250,_0xbbe9fb,_0x4e34a2){var _0x560711,_0x1a2ef8;if(!isActiveDirectoryConfigured(config)){logger[_0x234d('0xa')](_0x234d('0xe'),_0x30d250);return _0x4e34a2(null,![],{'message':_0x234d('0xf')});}return db['Setting'][_0x234d('0x10')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0x234d('0x11')],'raw':!![]})[_0x234d('0x12')](function(_0x25e2a2){_0x560711=_0x25e2a2;if(!_0x560711['adSsoEnabled']){logger[_0x234d('0xa')](_0x234d('0x13'),_0x30d250);throw new Error(_0x234d('0xf'));}return _0x403e55[_0x234d('0x10')]({'attributes':['id',_0x234d('0x14'),_0x234d('0x15'),_0x234d('0x16'),_0x234d('0x17'),_0x234d('0x18'),_0x234d('0x19'),'blockedAt',_0x234d('0x1a')],'where':{'name':_0x30d250,'role':{'$or':['admin','user',_0x234d('0x1b')]},'adSsoEnabled':!![]}});})['then'](function(_0x2d59e5){if(!_0x2d59e5||_0x2d59e5&&_0x2d59e5['name']!==_0x30d250){throw new Error(_0x234d('0xf'));}_0x1a2ef8=_0x2d59e5;var _0xf46b97=_0x1a2ef8[_0x234d('0x14')]+'@'+config[_0x234d('0x5')]['domain'];return adAuthenticate(config[_0x234d('0x5')],_0xf46b97,_0xbbe9fb);})[_0x234d('0x12')](function(_0x113fdb){if(_0x1a2ef8[_0x234d('0x18')]){throw new Error(_0x234d('0xf'));}if(_0x560711[_0x234d('0x11')]>0x0){if(_0x1a2ef8[_0x234d('0x19')]){if(moment(_0x1a2ef8[_0x234d('0x1c')])['add'](_0x560711[_0x234d('0x11')],_0x234d('0x1d'))>moment()){throw new Error(_0x234d('0xf'));}return utils[_0x234d('0x1e')](_0x1a2ef8,0x0,![],null)['then'](function(){return utils['getLicense'](_0x1a2ef8);})[_0x234d('0x12')](function(){return _0x4e34a2(null,_0x1a2ef8);});}else{return utils[_0x234d('0x1f')](_0x1a2ef8)[_0x234d('0x12')](function(){return _0x4e34a2(null,_0x1a2ef8);});}}else{return utils['getLicense'](_0x1a2ef8)['then'](function(){return _0x4e34a2(null,_0x1a2ef8);});}})['catch'](function(_0x4f029e){return _0x4e34a2(null,![],_0x4f029e);});}function handleError(_0x37e35b,_0x3be375,_0xde3eea){return _0x37e35b[_0x234d('0x20')](_0x3be375||0x1f4)[_0x234d('0x21')]({'message':_0xde3eea?_0xde3eea['message']||_0xde3eea:''});}exports[_0x234d('0x22')]=function(_0x29467c,_0xda3ac8,_0x303426){passport[_0x234d('0x9')](_0x234d('0x23'),function(_0x48cb90,_0x18e37a,_0x273871){var _0x38abe3=_0x48cb90||_0x273871;if(_0x38abe3){return handleError(_0xda3ac8,0x191,_0x38abe3);}if(!_0x18e37a){return handleError(_0xda3ac8,0x194,{'message':_0x234d('0x24')});}else{var _0x45a35f={'payload':{'id':_0x18e37a['id'],'role':_0x18e37a['role']},'options':{'expiresIn':0x15180}};return authService[_0x234d('0x25')](_0x45a35f)[_0x234d('0x12')](function(_0x283d6d){_0xda3ac8[_0x234d('0x26')]({'id':_0x18e37a['id'],'token':_0x283d6d,'statusCall':'','isAlreadyLogged':_0x18e37a[_0x234d('0x1a')]});});}})(_0x29467c,_0xda3ac8,_0x303426);};passport['use']('ad-login',new LocalStrategy({'usernameField':'name','passwordField':_0x234d('0x15')},function(_0x52f69e,_0x36329c,_0x1416e8){return ActiveDirectoryAuthenticate(db[_0x234d('0x27')],_0x52f69e,_0x36329c,_0x1416e8);}));