Built motion from commit 85f716e9.|2.6.8
[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 _0x5393=['bluebird','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','activedirectory','undefined','baseDN','authenticate','error','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','disabled','blocked','blockedAt','online','user','domain','add','minutes','getLicense','send','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','ad-login','User','passport','passport-local','Strategy','moment','activedirectory2'];(function(_0x432668,_0x356f30){var _0x43fe50=function(_0x657453){while(--_0x657453){_0x432668['push'](_0x432668['shift']());}};_0x43fe50(++_0x356f30);}(_0x5393,0x1ea));var _0x3539=function(_0x3b2b35,_0xb1424e){_0x3b2b35=_0x3b2b35-0x0;var _0x219b65=_0x5393[_0x3b2b35];return _0x219b65;};'use strict';var passport=require(_0x3539('0x0'));var LocalStrategy=require(_0x3539('0x1'))[_0x3539('0x2')];var moment=require(_0x3539('0x3'));var ActiveDirectory=require(_0x3539('0x4'));var BPromise=require(_0x3539('0x5'));var util=require('util');var db=require(_0x3539('0x6'))['db'];var authService=require(_0x3539('0x7'));var utils=require(_0x3539('0x8'));var config=require(_0x3539('0x9'));var logger=require(_0x3539('0xa'))('api');function isActiveDirectoryConfigured(_0x97a267){var _0x76bb24=![];if(typeof _0x97a267[_0x3539('0xb')]!==_0x3539('0xc')){_0x76bb24=_0x97a267['activedirectory'][_0x3539('0xd')]&&_0x97a267[_0x3539('0xb')]['url']&&_0x97a267[_0x3539('0xb')]['domain'];}return _0x76bb24;}function adAuthenticate(_0x5f0d21,_0x3eef1f,_0x39ceeb){return new BPromise(function(_0x51862a,_0x4c221a){try{var _0x437c1b=new ActiveDirectory(_0x5f0d21);_0x437c1b[_0x3539('0xe')](_0x3eef1f,_0x39ceeb,function(_0x39fac1,_0x1dc2f6){if(_0x39fac1){logger[_0x3539('0xf')](_0x3539('0x10'),_0x3eef1f,util['inspect'](_0x39fac1,{'showHidden':![],'depth':null}));_0x4c221a(_0x3539('0x11'));}else if(!_0x1dc2f6){logger[_0x3539('0xf')](_0x3539('0x12'),_0x3eef1f);_0x4c221a(_0x3539('0x11'));}else{_0x51862a(_0x1dc2f6);}});}catch(_0x55369e){_0x4c221a(_0x55369e);}});}function ActiveDirectoryAuthenticate(_0x529a6c,_0x114819,_0x2c5273,_0x264188){var _0xed207c,_0x3079bd;if(!isActiveDirectoryConfigured(config)){logger[_0x3539('0xf')](_0x3539('0x13'),_0x114819);return _0x264188(null,![],{'message':_0x3539('0x11')});}return db['Setting'][_0x3539('0x14')]({'where':{'id':0x1},'attributes':[_0x3539('0x15'),_0x3539('0x16')],'raw':!![]})[_0x3539('0x17')](function(_0x2f96e9){_0xed207c=_0x2f96e9;if(!_0xed207c['adSsoEnabled']){logger[_0x3539('0xf')](_0x3539('0x18'),_0x114819);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x529a6c[_0x3539('0x14')]({'attributes':['id',_0x3539('0x19'),_0x3539('0x1a'),_0x3539('0x1b'),'role',_0x3539('0x1c'),_0x3539('0x1d'),_0x3539('0x1e'),_0x3539('0x1f')],'where':{'name':_0x114819,'role':{'$or':['admin',_0x3539('0x20'),'agent']},'adSsoEnabled':!![]}});})['then'](function(_0x29ba56){if(!_0x29ba56||_0x29ba56&&_0x29ba56[_0x3539('0x19')]!==_0x114819){throw new Error(_0x3539('0x11'));}_0x3079bd=_0x29ba56;var _0x1d571f=_0x3079bd[_0x3539('0x19')]+'@'+config['activedirectory'][_0x3539('0x21')];return adAuthenticate(config[_0x3539('0xb')],_0x1d571f,_0x2c5273);})['then'](function(_0x283644){if(_0x3079bd[_0x3539('0x1c')]){throw new Error(_0x3539('0x11'));}if(_0xed207c[_0x3539('0x16')]>0x0){if(_0x3079bd[_0x3539('0x1d')]){if(moment(_0x3079bd['blockedAt'])[_0x3539('0x22')](_0xed207c[_0x3539('0x16')],_0x3539('0x23'))>moment()){throw new Error(_0x3539('0x11'));}return utils['clearBlockUser'](_0x3079bd,0x0,![],null)['then'](function(){return utils['getLicense'](_0x3079bd);})['then'](function(){return _0x264188(null,_0x3079bd);});}else{return utils[_0x3539('0x24')](_0x3079bd)['then'](function(){return _0x264188(null,_0x3079bd);});}}else{return utils['getLicense'](_0x3079bd)[_0x3539('0x17')](function(){return _0x264188(null,_0x3079bd);});}})['catch'](function(_0x563ed0){return _0x264188(null,![],_0x563ed0);});}function handleError(_0x95e915,_0x3ebd50,_0x3b22e5){return _0x95e915['status'](_0x3ebd50||0x1f4)[_0x3539('0x25')]({'message':_0x3b22e5?_0x3b22e5[_0x3539('0x26')]||_0x3b22e5:''});}exports['login']=function(_0x322ff6,_0x8d46d,_0x5acb6a){passport['authenticate']('ad-login',function(_0xd4501b,_0x460935,_0x1d1edc){var _0x175d81=_0xd4501b||_0x1d1edc;if(_0x175d81){return handleError(_0x8d46d,0x191,_0x175d81);}if(!_0x460935){return handleError(_0x8d46d,0x194,{'message':_0x3539('0x27')});}else{var _0xf4edf8={'payload':{'id':_0x460935['id'],'role':_0x460935['role']},'options':{'expiresIn':0x15180}};return authService[_0x3539('0x28')](_0xf4edf8)['then'](function(_0x28419f){_0x8d46d[_0x3539('0x29')]({'id':_0x460935['id'],'token':_0x28419f,'statusCall':'','isAlreadyLogged':_0x460935[_0x3539('0x1f')]});});}})(_0x322ff6,_0x8d46d,_0x5acb6a);};passport[_0x3539('0x2a')](_0x3539('0x2b'),new LocalStrategy({'usernameField':_0x3539('0x19'),'passwordField':_0x3539('0x1a')},function(_0xd94182,_0x49e0d6,_0xfeec16){return ActiveDirectoryAuthenticate(db[_0x3539('0x2c')],_0xd94182,_0x49e0d6,_0xfeec16);}));