Built motion from commit 8c034dcd.|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 _0xc86e=['moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/logger','undefined','activedirectory','baseDN','url','domain','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','salt','role','disabled','blockedAt','online','user','blocked','minutes','clearBlockUser','getLicense','status','login','authenticate','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','use','password','passport','passport-local'];(function(_0x5533b0,_0x2c1801){var _0x1b10f7=function(_0x5bc55c){while(--_0x5bc55c){_0x5533b0['push'](_0x5533b0['shift']());}};_0x1b10f7(++_0x2c1801);}(_0xc86e,0xd0));var _0xec86=function(_0x28a510,_0x58b893){_0x28a510=_0x28a510-0x0;var _0x499425=_0xc86e[_0x28a510];return _0x499425;};'use strict';var passport=require(_0xec86('0x0'));var LocalStrategy=require(_0xec86('0x1'))['Strategy'];var moment=require(_0xec86('0x2'));var ActiveDirectory=require(_0xec86('0x3'));var BPromise=require(_0xec86('0x4'));var util=require(_0xec86('0x5'));var db=require(_0xec86('0x6'))['db'];var authService=require(_0xec86('0x7'));var utils=require(_0xec86('0x8'));var config=require('../../config/environment');var logger=require(_0xec86('0x9'))('api');function isActiveDirectoryConfigured(_0x111662){var _0x45b954=![];if(typeof _0x111662['activedirectory']!==_0xec86('0xa')){_0x45b954=_0x111662[_0xec86('0xb')][_0xec86('0xc')]&&_0x111662[_0xec86('0xb')][_0xec86('0xd')]&&_0x111662['activedirectory'][_0xec86('0xe')];}return _0x45b954;}function adAuthenticate(_0x25927c,_0x255c6b,_0x466d6a){return new BPromise(function(_0x2d23e3,_0x504b34){try{var _0x2b97f6=new ActiveDirectory(_0x25927c);_0x2b97f6['authenticate'](_0x255c6b,_0x466d6a,function(_0x529220,_0x4960f1){if(_0x529220){logger['error']('Error\x20authenticate\x20%s:\x20%s',_0x255c6b,util[_0xec86('0xf')](_0x529220,{'showHidden':![],'depth':null}));_0x504b34(_0xec86('0x10'));}else if(!_0x4960f1){logger[_0xec86('0x11')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x255c6b);_0x504b34('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x2d23e3(_0x4960f1);}});}catch(_0x2b009){_0x504b34(_0x2b009);}});}function ActiveDirectoryAuthenticate(_0x49230e,_0x366991,_0x179a03,_0x114745){var _0x29d8c2,_0x5e3dd9;if(!isActiveDirectoryConfigured(config)){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x366991);return _0x114745(null,![],{'message':_0xec86('0x10')});}return db[_0xec86('0x12')][_0xec86('0x13')]({'where':{'id':0x1},'attributes':[_0xec86('0x14'),_0xec86('0x15')],'raw':!![]})[_0xec86('0x16')](function(_0x31ca9c){_0x29d8c2=_0x31ca9c;if(!_0x29d8c2[_0xec86('0x14')]){logger['error'](_0xec86('0x17'),_0x366991);throw new Error(_0xec86('0x10'));}return _0x49230e[_0xec86('0x13')]({'attributes':['id',_0xec86('0x18'),'password',_0xec86('0x19'),_0xec86('0x1a'),_0xec86('0x1b'),'blocked',_0xec86('0x1c'),_0xec86('0x1d')],'where':{'name':_0x366991,'role':{'$or':['admin',_0xec86('0x1e'),'agent']},'adSsoEnabled':!![]}});})['then'](function(_0x400d80){if(!_0x400d80||_0x400d80&&_0x400d80['name']!==_0x366991){throw new Error(_0xec86('0x10'));}_0x5e3dd9=_0x400d80;var _0x101bcf=_0x5e3dd9[_0xec86('0x18')]+'@'+config[_0xec86('0xb')]['domain'];return adAuthenticate(config['activedirectory'],_0x101bcf,_0x179a03);})[_0xec86('0x16')](function(_0x1c1014){if(_0x5e3dd9[_0xec86('0x1b')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x29d8c2[_0xec86('0x15')]>0x0){if(_0x5e3dd9[_0xec86('0x1f')]){if(moment(_0x5e3dd9[_0xec86('0x1c')])['add'](_0x29d8c2['blockDuration'],_0xec86('0x20'))>moment()){throw new Error(_0xec86('0x10'));}return utils[_0xec86('0x21')](_0x5e3dd9,0x0,![],null)[_0xec86('0x16')](function(){return utils['getLicense'](_0x5e3dd9);})[_0xec86('0x16')](function(){return _0x114745(null,_0x5e3dd9);});}else{return utils[_0xec86('0x22')](_0x5e3dd9)['then'](function(){return _0x114745(null,_0x5e3dd9);});}}else{return utils[_0xec86('0x22')](_0x5e3dd9)[_0xec86('0x16')](function(){return _0x114745(null,_0x5e3dd9);});}})['catch'](function(_0xaf2310){return _0x114745(null,![],_0xaf2310);});}function handleError(_0xa1e20d,_0x2d80ea,_0x35c17a){return _0xa1e20d[_0xec86('0x23')](_0x2d80ea||0x1f4)['send']({'message':_0x35c17a?_0x35c17a['message']||_0x35c17a:''});}exports[_0xec86('0x24')]=function(_0x3455d2,_0x203085,_0x9b6005){passport[_0xec86('0x25')](_0xec86('0x26'),function(_0xc5594b,_0x119208,_0x16acb8){var _0x1c2f51=_0xc5594b||_0x16acb8;if(_0x1c2f51){return handleError(_0x203085,0x191,_0x1c2f51);}if(!_0x119208){return handleError(_0x203085,0x194,{'message':_0xec86('0x27')});}else{var _0x1d2928={'payload':{'id':_0x119208['id'],'role':_0x119208['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x1d2928)[_0xec86('0x16')](function(_0x1fb929){_0x203085['json']({'id':_0x119208['id'],'token':_0x1fb929,'statusCall':'','isAlreadyLogged':_0x119208[_0xec86('0x1d')]});});}})(_0x3455d2,_0x203085,_0x9b6005);};passport[_0xec86('0x28')]('ad-login',new LocalStrategy({'usernameField':'name','passwordField':_0xec86('0x29')},function(_0x18f2fe,_0xd77177,_0x21e563){return ActiveDirectoryAuthenticate(db['User'],_0x18f2fe,_0xd77177,_0x21e563);}));