f4cee7dc86e5175f4dd89d284b8dbdc717e706b5
[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 _0x6832=['baseDN','domain','error','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','then','salt','role','disabled','blocked','blockedAt','online','user','agent','name','blockDuration','add','minutes','clearBlockUser','getLicense','catch','status','send','message','login','authenticate','ad-login','signToken','use','password','passport-local','Strategy','activedirectory2','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','undefined','activedirectory'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6832,0x7c));var _0x2683=function(_0x479568,_0x3b3618){_0x479568=_0x479568-0x0;var _0x1999d3=_0x6832[_0x479568];return _0x1999d3;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x2683('0x0'))[_0x2683('0x1')];var moment=require('moment');var ActiveDirectory=require(_0x2683('0x2'));var BPromise=require('bluebird');var util=require('util');var db=require(_0x2683('0x3'))['db'];var authService=require(_0x2683('0x4'));var utils=require(_0x2683('0x5'));var config=require(_0x2683('0x6'));var logger=require(_0x2683('0x7'))(_0x2683('0x8'));function isActiveDirectoryConfigured(_0xb37d67){var _0x537b23=![];if(typeof _0xb37d67['activedirectory']!==_0x2683('0x9')){_0x537b23=_0xb37d67[_0x2683('0xa')][_0x2683('0xb')]&&_0xb37d67[_0x2683('0xa')]['url']&&_0xb37d67[_0x2683('0xa')][_0x2683('0xc')];}return _0x537b23;}function adAuthenticate(_0x3eced4,_0xc8aa8c,_0x203442){return new BPromise(function(_0x27013f,_0x405fdb){try{var _0x16991a=new ActiveDirectory(_0x3eced4);_0x16991a['authenticate'](_0xc8aa8c,_0x203442,function(_0x142462,_0xd8a7c){if(_0x142462){logger[_0x2683('0xd')](_0x2683('0xe'),_0xc8aa8c,util['inspect'](_0x142462,{'showHidden':![],'depth':null}));_0x405fdb(_0x2683('0xf'));}else if(!_0xd8a7c){logger[_0x2683('0xd')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0xc8aa8c);_0x405fdb(_0x2683('0xf'));}else{_0x27013f(_0xd8a7c);}});}catch(_0x5ca811){_0x405fdb(_0x5ca811);}});}function ActiveDirectoryAuthenticate(_0x3edc0b,_0x5c0734,_0x588227,_0x21943a){var _0x31461c,_0x1c7d95;if(!isActiveDirectoryConfigured(config)){logger[_0x2683('0xd')](_0x2683('0x10'),_0x5c0734);return _0x21943a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x2683('0x11')][_0x2683('0x12')]({'where':{'id':0x1},'attributes':[_0x2683('0x13'),'blockDuration'],'raw':!![]})[_0x2683('0x14')](function(_0x167341){_0x31461c=_0x167341;if(!_0x31461c[_0x2683('0x13')]){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x5c0734);throw new Error(_0x2683('0xf'));}return _0x3edc0b[_0x2683('0x12')]({'attributes':['id','name','password',_0x2683('0x15'),_0x2683('0x16'),_0x2683('0x17'),_0x2683('0x18'),_0x2683('0x19'),_0x2683('0x1a')],'where':{'name':_0x5c0734,'role':{'$or':['admin',_0x2683('0x1b'),_0x2683('0x1c')]},'adSsoEnabled':!![]}});})['then'](function(_0x3b9e6d){if(!_0x3b9e6d||_0x3b9e6d&&_0x3b9e6d[_0x2683('0x1d')]!==_0x5c0734){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x1c7d95=_0x3b9e6d;var _0x469bf8=_0x1c7d95[_0x2683('0x1d')]+'@'+config[_0x2683('0xa')]['domain'];return adAuthenticate(config[_0x2683('0xa')],_0x469bf8,_0x588227);})[_0x2683('0x14')](function(_0x27f88b){if(_0x1c7d95['disabled']){throw new Error(_0x2683('0xf'));}if(_0x31461c[_0x2683('0x1e')]>0x0){if(_0x1c7d95[_0x2683('0x18')]){if(moment(_0x1c7d95[_0x2683('0x19')])[_0x2683('0x1f')](_0x31461c[_0x2683('0x1e')],_0x2683('0x20'))>moment()){throw new Error(_0x2683('0xf'));}return utils[_0x2683('0x21')](_0x1c7d95,0x0,![],null)[_0x2683('0x14')](function(){return utils[_0x2683('0x22')](_0x1c7d95);})['then'](function(){return _0x21943a(null,_0x1c7d95);});}else{return utils['getLicense'](_0x1c7d95)['then'](function(){return _0x21943a(null,_0x1c7d95);});}}else{return utils[_0x2683('0x22')](_0x1c7d95)[_0x2683('0x14')](function(){return _0x21943a(null,_0x1c7d95);});}})[_0x2683('0x23')](function(_0x432bad){return _0x21943a(null,![],_0x432bad);});}function handleError(_0x14923f,_0x3ce21e,_0x24421e){return _0x14923f[_0x2683('0x24')](_0x3ce21e||0x1f4)[_0x2683('0x25')]({'message':_0x24421e?_0x24421e[_0x2683('0x26')]||_0x24421e:''});}exports[_0x2683('0x27')]=function(_0x283452,_0x2c70b0,_0x4f11a9){passport[_0x2683('0x28')](_0x2683('0x29'),function(_0x285e3e,_0x139031,_0x29e2e6){var _0x24b6d9=_0x285e3e||_0x29e2e6;if(_0x24b6d9){return handleError(_0x2c70b0,0x191,_0x24b6d9);}if(!_0x139031){return handleError(_0x2c70b0,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x2da52a={'payload':{'id':_0x139031['id'],'role':_0x139031[_0x2683('0x16')]},'options':{'expiresIn':0x15180}};return authService[_0x2683('0x2a')](_0x2da52a)[_0x2683('0x14')](function(_0x3bf6d2){_0x2c70b0['json']({'id':_0x139031['id'],'token':_0x3bf6d2,'statusCall':'','isAlreadyLogged':_0x139031[_0x2683('0x1a')]});});}})(_0x283452,_0x2c70b0,_0x4f11a9);};passport[_0x2683('0x2b')](_0x2683('0x29'),new LocalStrategy({'usernameField':'name','passwordField':_0x2683('0x2c')},function(_0x4f98b8,_0x383455,_0x447e49){return ActiveDirectoryAuthenticate(db['User'],_0x4f98b8,_0x383455,_0x447e49);}));