Built motion from commit 1ea47bf4.|2.6.34
[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 _0x15b3=['error','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','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','password','salt','role','disabled','blocked','blockedAt','online','user','agent','name','add','minutes','clearBlockUser','getLicense','status','message','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','User','passport','passport-local','Strategy','moment','activedirectory2','../../mysqldb','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','authenticate'];(function(_0x517586,_0xc97d01){var _0x4d7494=function(_0x1383d8){while(--_0x1383d8){_0x517586['push'](_0x517586['shift']());}};_0x4d7494(++_0xc97d01);}(_0x15b3,0x1b5));var _0x315b=function(_0x44d36b,_0x50dc95){_0x44d36b=_0x44d36b-0x0;var _0x562b25=_0x15b3[_0x44d36b];return _0x562b25;};'use strict';var passport=require(_0x315b('0x0'));var LocalStrategy=require(_0x315b('0x1'))[_0x315b('0x2')];var moment=require(_0x315b('0x3'));var ActiveDirectory=require(_0x315b('0x4'));var BPromise=require('bluebird');var util=require('util');var db=require(_0x315b('0x5'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x315b('0x6'));var config=require(_0x315b('0x7'));var logger=require(_0x315b('0x8'))(_0x315b('0x9'));function isActiveDirectoryConfigured(_0x3719d7){var _0x238d13=![];if(typeof _0x3719d7[_0x315b('0xa')]!==_0x315b('0xb')){_0x238d13=_0x3719d7[_0x315b('0xa')]['baseDN']&&_0x3719d7[_0x315b('0xa')]['url']&&_0x3719d7[_0x315b('0xa')]['domain'];}return _0x238d13;}function adAuthenticate(_0x2549dc,_0x5493cf,_0x1bb67d){return new BPromise(function(_0x7128ed,_0x1e3ba0){try{var _0x308258=new ActiveDirectory(_0x2549dc);_0x308258[_0x315b('0xc')](_0x5493cf,_0x1bb67d,function(_0x38f8f0,_0x498e38){if(_0x38f8f0){logger[_0x315b('0xd')]('Error\x20authenticate\x20%s:\x20%s',_0x5493cf,util[_0x315b('0xe')](_0x38f8f0,{'showHidden':![],'depth':null}));_0x1e3ba0(_0x315b('0xf'));}else if(!_0x498e38){logger['error'](_0x315b('0x10'),_0x5493cf);_0x1e3ba0(_0x315b('0xf'));}else{_0x7128ed(_0x498e38);}});}catch(_0x8fde7b){_0x1e3ba0(_0x8fde7b);}});}function ActiveDirectoryAuthenticate(_0x3c012c,_0x3bee1e,_0x12ded2,_0x1b1e4f){var _0x4ec361,_0x2d1d8b;if(!isActiveDirectoryConfigured(config)){logger[_0x315b('0xd')](_0x315b('0x11'),_0x3bee1e);return _0x1b1e4f(null,![],{'message':_0x315b('0xf')});}return db[_0x315b('0x12')][_0x315b('0x13')]({'where':{'id':0x1},'attributes':[_0x315b('0x14'),_0x315b('0x15')],'raw':!![]})[_0x315b('0x16')](function(_0xaaea9){_0x4ec361=_0xaaea9;if(!_0x4ec361[_0x315b('0x14')]){logger[_0x315b('0xd')](_0x315b('0x17'),_0x3bee1e);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x3c012c[_0x315b('0x13')]({'attributes':['id','name',_0x315b('0x18'),_0x315b('0x19'),_0x315b('0x1a'),_0x315b('0x1b'),_0x315b('0x1c'),_0x315b('0x1d'),_0x315b('0x1e')],'where':{'name':_0x3bee1e,'role':{'$or':['admin',_0x315b('0x1f'),_0x315b('0x20')]},'adSsoEnabled':!![]}});})[_0x315b('0x16')](function(_0x12cdea){if(!_0x12cdea||_0x12cdea&&_0x12cdea['name']!==_0x3bee1e){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x2d1d8b=_0x12cdea;var _0x3c23f4=_0x2d1d8b[_0x315b('0x21')]+'@'+config[_0x315b('0xa')]['domain'];return adAuthenticate(config['activedirectory'],_0x3c23f4,_0x12ded2);})[_0x315b('0x16')](function(_0x266b67){if(_0x2d1d8b[_0x315b('0x1b')]){throw new Error(_0x315b('0xf'));}if(_0x4ec361[_0x315b('0x15')]>0x0){if(_0x2d1d8b['blocked']){if(moment(_0x2d1d8b[_0x315b('0x1d')])[_0x315b('0x22')](_0x4ec361[_0x315b('0x15')],_0x315b('0x23'))>moment()){throw new Error(_0x315b('0xf'));}return utils[_0x315b('0x24')](_0x2d1d8b,0x0,![],null)[_0x315b('0x16')](function(){return utils['getLicense'](_0x2d1d8b);})['then'](function(){return _0x1b1e4f(null,_0x2d1d8b);});}else{return utils['getLicense'](_0x2d1d8b)[_0x315b('0x16')](function(){return _0x1b1e4f(null,_0x2d1d8b);});}}else{return utils[_0x315b('0x25')](_0x2d1d8b)[_0x315b('0x16')](function(){return _0x1b1e4f(null,_0x2d1d8b);});}})['catch'](function(_0xafc4d6){return _0x1b1e4f(null,![],_0xafc4d6);});}function handleError(_0x3e4dae,_0x242e57,_0x5257e8){return _0x3e4dae[_0x315b('0x26')](_0x242e57||0x1f4)['send']({'message':_0x5257e8?_0x5257e8[_0x315b('0x27')]||_0x5257e8:''});}exports['login']=function(_0x17882e,_0xee52b9,_0x32709b){passport['authenticate'](_0x315b('0x28'),function(_0x2e3984,_0xaa5f27,_0x10d069){var _0x23a58e=_0x2e3984||_0x10d069;if(_0x23a58e){return handleError(_0xee52b9,0x191,_0x23a58e);}if(!_0xaa5f27){return handleError(_0xee52b9,0x194,{'message':_0x315b('0x29')});}else{var _0x297711={'payload':{'id':_0xaa5f27['id'],'role':_0xaa5f27[_0x315b('0x1a')]},'options':{'expiresIn':0x15180}};return authService[_0x315b('0x2a')](_0x297711)[_0x315b('0x16')](function(_0x5cfdc4){_0xee52b9[_0x315b('0x2b')]({'id':_0xaa5f27['id'],'token':_0x5cfdc4,'statusCall':'','isAlreadyLogged':_0xaa5f27[_0x315b('0x1e')]});});}})(_0x17882e,_0xee52b9,_0x32709b);};passport['use']('ad-login',new LocalStrategy({'usernameField':_0x315b('0x21'),'passwordField':_0x315b('0x18')},function(_0x59b0dc,_0x79c44b,_0x58a90d){return ActiveDirectoryAuthenticate(db[_0x315b('0x2c')],_0x59b0dc,_0x79c44b,_0x58a90d);}));