Built motion from commit e8da49ee.|2.6.33
[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 _0xffbd=['api','undefined','activedirectory','baseDN','url','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','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','adSsoEnabled','blockDuration','name','password','salt','role','blocked','online','admin','user','then','disabled','blockedAt','add','minutes','clearBlockUser','getLicense','catch','status','send','message','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','passport-local','Strategy','moment','activedirectory2','util','../../mysqldb','../../config/environment','../../config/logger'];(function(_0x21badd,_0x4362cb){var _0x5850aa=function(_0x146d41){while(--_0x146d41){_0x21badd['push'](_0x21badd['shift']());}};_0x5850aa(++_0x4362cb);}(_0xffbd,0x170));var _0xdffb=function(_0x2e4a0f,_0x3a9bb6){_0x2e4a0f=_0x2e4a0f-0x0;var _0x25a3cd=_0xffbd[_0x2e4a0f];return _0x25a3cd;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xdffb('0x0'))[_0xdffb('0x1')];var moment=require(_0xdffb('0x2'));var ActiveDirectory=require(_0xdffb('0x3'));var BPromise=require('bluebird');var util=require(_0xdffb('0x4'));var db=require(_0xdffb('0x5'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var config=require(_0xdffb('0x6'));var logger=require(_0xdffb('0x7'))(_0xdffb('0x8'));function isActiveDirectoryConfigured(_0x305f3e){var _0x3b6dd4=![];if(typeof _0x305f3e['activedirectory']!==_0xdffb('0x9')){_0x3b6dd4=_0x305f3e[_0xdffb('0xa')][_0xdffb('0xb')]&&_0x305f3e[_0xdffb('0xa')][_0xdffb('0xc')]&&_0x305f3e[_0xdffb('0xa')][_0xdffb('0xd')];}return _0x3b6dd4;}function adAuthenticate(_0x3d1d98,_0x577331,_0x4bded3){return new BPromise(function(_0x56b869,_0x496ea8){try{var _0x4f09bc=new ActiveDirectory(_0x3d1d98);_0x4f09bc[_0xdffb('0xe')](_0x577331,_0x4bded3,function(_0x31b05f,_0x57e843){if(_0x31b05f){logger[_0xdffb('0xf')](_0xdffb('0x10'),_0x577331,util[_0xdffb('0x11')](_0x31b05f,{'showHidden':![],'depth':null}));_0x496ea8(_0xdffb('0x12'));}else if(!_0x57e843){logger[_0xdffb('0xf')](_0xdffb('0x13'),_0x577331);_0x496ea8('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x56b869(_0x57e843);}});}catch(_0x744a61){_0x496ea8(_0x744a61);}});}function ActiveDirectoryAuthenticate(_0x1d9c12,_0x479900,_0x8456cb,_0x2e2d64){var _0x278b5e,_0x84bc0a;if(!isActiveDirectoryConfigured(config)){logger[_0xdffb('0xf')](_0xdffb('0x14'),_0x479900);return _0x2e2d64(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xdffb('0x15'),_0xdffb('0x16')],'raw':!![]})['then'](function(_0x3c1b56){_0x278b5e=_0x3c1b56;if(!_0x278b5e[_0xdffb('0x15')]){logger[_0xdffb('0xf')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x479900);throw new Error(_0xdffb('0x12'));}return _0x1d9c12['findOne']({'attributes':['id',_0xdffb('0x17'),_0xdffb('0x18'),_0xdffb('0x19'),_0xdffb('0x1a'),'disabled',_0xdffb('0x1b'),'blockedAt',_0xdffb('0x1c')],'where':{'name':_0x479900,'role':{'$or':[_0xdffb('0x1d'),_0xdffb('0x1e'),'agent']},'adSsoEnabled':!![]}});})[_0xdffb('0x1f')](function(_0x368bb7){if(!_0x368bb7||_0x368bb7&&_0x368bb7[_0xdffb('0x17')]!==_0x479900){throw new Error(_0xdffb('0x12'));}_0x84bc0a=_0x368bb7;var _0x480c9c=_0x84bc0a[_0xdffb('0x17')]+'@'+config[_0xdffb('0xa')][_0xdffb('0xd')];return adAuthenticate(config[_0xdffb('0xa')],_0x480c9c,_0x8456cb);})[_0xdffb('0x1f')](function(_0x3517fe){if(_0x84bc0a[_0xdffb('0x20')]){throw new Error(_0xdffb('0x12'));}if(_0x278b5e[_0xdffb('0x16')]>0x0){if(_0x84bc0a[_0xdffb('0x1b')]){if(moment(_0x84bc0a[_0xdffb('0x21')])[_0xdffb('0x22')](_0x278b5e[_0xdffb('0x16')],_0xdffb('0x23'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0xdffb('0x24')](_0x84bc0a,0x0,![],null)[_0xdffb('0x1f')](function(){return utils[_0xdffb('0x25')](_0x84bc0a);})[_0xdffb('0x1f')](function(){return _0x2e2d64(null,_0x84bc0a);});}else{return utils['getLicense'](_0x84bc0a)[_0xdffb('0x1f')](function(){return _0x2e2d64(null,_0x84bc0a);});}}else{return utils['getLicense'](_0x84bc0a)['then'](function(){return _0x2e2d64(null,_0x84bc0a);});}})[_0xdffb('0x26')](function(_0x46742b){return _0x2e2d64(null,![],_0x46742b);});}function handleError(_0x56f35c,_0x493bbe,_0x3c1166){return _0x56f35c[_0xdffb('0x27')](_0x493bbe||0x1f4)[_0xdffb('0x28')]({'message':_0x3c1166?_0x3c1166[_0xdffb('0x29')]||_0x3c1166:''});}exports['login']=function(_0x3636e6,_0x5b92ec,_0x5946dd){passport[_0xdffb('0xe')](_0xdffb('0x2a'),function(_0x5649fa,_0x1a0226,_0x57a0cb){var _0x5558cc=_0x5649fa||_0x57a0cb;if(_0x5558cc){return handleError(_0x5b92ec,0x191,_0x5558cc);}if(!_0x1a0226){return handleError(_0x5b92ec,0x194,{'message':_0xdffb('0x2b')});}else{var _0x10ad55={'payload':{'id':_0x1a0226['id'],'role':_0x1a0226[_0xdffb('0x1a')]},'options':{'expiresIn':0x15180}};return authService[_0xdffb('0x2c')](_0x10ad55)['then'](function(_0x2d598e){_0x5b92ec[_0xdffb('0x2d')]({'id':_0x1a0226['id'],'token':_0x2d598e,'statusCall':'','isAlreadyLogged':_0x1a0226[_0xdffb('0x1c')]});});}})(_0x3636e6,_0x5b92ec,_0x5946dd);};passport[_0xdffb('0x2e')](_0xdffb('0x2a'),new LocalStrategy({'usernameField':_0xdffb('0x17'),'passwordField':_0xdffb('0x18')},function(_0x238d25,_0x166a3b,_0x107288){return ActiveDirectoryAuthenticate(db['User'],_0x238d25,_0x166a3b,_0x107288);}));