Log in as user / Logout to real user.

This commit is contained in:
Malishev Dmitry 2011-12-30 15:48:20 +03:00
parent 29772cbfdd
commit b13c07cca2
6 changed files with 111 additions and 32 deletions

View file

@ -11,9 +11,9 @@ $('document').ready(function() {
App.Utils.detectBrowser();
App.Ref.init();
//App.Env.world = 'USER';
App.Env.world = 'USER';
// Disabled cookie tab restoring. Enable if needed
if ('undefined' != typeof App.Tmp.loadTAB) {
/*if ('undefined' != typeof App.Tmp.loadTAB) {
App.Env.world = App.Tmp.loadTAB;
}
@ -25,7 +25,7 @@ $('document').ready(function() {
else {
App.Env.world = App.Constants.TABS[0];
}
}
}*/
App.Pages.init();
App.Core.listen();

View file

@ -1,3 +1,18 @@
App.Actions.login_as = function(evt)
{
var elm = $(evt.target);
var ref = elm.parents('.row');
var source = App.Helpers.evalJSON($(ref).find('.source').val())
App.Ajax.request('USER.loginAs', {'user': source.LOGIN_NAME}, function(reply) {
if (reply.result) {
location.href = "";
}
else {
App.Helpers.alert('You cannot do this action. Please contact support');
}
});
}
App.Actions.toggle_suspend = function(evt)
{
var elm = $(evt.target);
@ -156,6 +171,19 @@ App.Actions.change_password = function(evt)
App.Actions.profile_exit = function(evt)
{
evt.preventDefault();
if (App.Env.initialParams.real_user) { // exit "logged in as" state
App.Ajax.request('USER.logoutAs', {}, function(reply) {
if (reply.result) {
location.href = "";
}
else {
App.Helpers.alert('You cannot do this action. Please contact support');
}
});
return;
}
App.Ajax.request('MAIN.logoff', {}, function(reply) {
location.href = '';
});

View file

@ -134,6 +134,13 @@ App.Helpers.updateInitial = function()
});
$('#user-name').html(App.Env.initialParams.PROFILE.uid);
$('#page').removeClass('hidden');
if (App.Env.initialParams.real_user) {
var tpl = App.Templates.get('logged_as', 'general');
tpl.set(':YOU_ARE', App.Env.initialParams.real_user);
tpl.set(':USER', App.Env.initialParams.auth_user.uid.uid);
$('body').prepend(tpl.finalize());
}
}
App.Helpers.beforeAjax = function(jedi_method)

View file

@ -16,6 +16,7 @@ App.Templates.html = {
"Well," the farmer said, "I didn\'t have anymore rope, so I took off my belt and tied her tail to the rafter. In that moment, my pants fell down and my wife walked in ... Some things you just can\'t explain."']
},
general: {
logged_as: ['<div id="logged-in-as">You (<i>~!:YOU_ARE~!</i>) are viewing <strong style="font-weight: bold; color: #2A8FBD;">~!:USER~!</strong> interface. Exit it to return to your own.</div>'],
over_bar: ['<span style="width:~!:OVER_PERCENTS~!%;right:-~!:OVER_PERCENTS_2~!%;" class="bar_overdraft"></span>'],
loading: ['<div id="loading" style="border-radius: 0 0 6px 6px;top: 0;font-size:19px;font-weight: bol;position:fixed;width: 150px; background-color:#6E6E62;z-index: 9999; padding: 8px;left: 50%;margin-left:-75px;">\
<center><div style="width: 105px; height:30px;background-image: url(\'../images/loading.png\');"></center>\
@ -397,13 +398,13 @@ App.Templates.html = {
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">Package:</label>\
<select name="PACKAGE" class="styled">\
<select name="PACKAGE" class="styled disabled" >\
~!:PACKAGE_OPTIONS~!\
</select>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">Shell:</label>\
<select class="styled" name="SHELL">\
<select class="styled disabled" name="SHELL">\
~!:SHELL_OPTIONS~!\
</select>\
</div>\
@ -474,6 +475,9 @@ App.Templates.html = {
</span>\
</div>\
<div class="user-details-box">\
<span class="prop-box prop-box_group-values cc user-details do_action_login_as">\
<span class="prop-value login-as do_action_login_as">login as</span>\
</span>\
<span class="prop-box user-name">\
<span class="prop-title">name:</span>\
<span class="prop-value">~!:FULLNAME~!</span>\

View file

@ -227,7 +227,8 @@ MAIL;
'DB' => $this->getDbParams($data_db),
'USERS' => $this->getUsersParams($data_user),
'totals' => $totals,
'PROFILE' => $user
'PROFILE' => $user,
'real_user' => $_SESSION['real_user'] ? $_SESSION['real_user'] : NULL
);
return $this->reply(true, $reply);

View file

@ -270,6 +270,7 @@ class WEB_DOMAIN extends AjaxHandler
$user = $this->getLoggedUser();
$_DOMAIN = $_new['DOMAIN'];
if ($_old['SUSPEND'] != $_new['SUSPEND']) {
if ($_new['SUSPEND'] == 'on') {
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
@ -285,6 +286,22 @@ class WEB_DOMAIN extends AjaxHandler
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
if ($_new['SUSPEND'] == 'on') {
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
}
// return $this->reply($result['status']);
}
else {
$result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
}
if ($_old['IP'] != $_new['IP']) {
$result = array();
@ -422,7 +439,7 @@ class WEB_DOMAIN extends AjaxHandler
}
}
if ($_new['SSL']) {
/*if ($_new['SSL']) {
$params = array(
'USER' => $user['uid'],
'DOMAIN' => $_new['DOMAIN'],
@ -439,16 +456,19 @@ class WEB_DOMAIN extends AjaxHandler
if (!$result['status']) {
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
}
}
}*/
if (!empty($_s['SSL_KEY'])) {
$ssl_file = tempnam(sys_get_temp_dir(), 'ssl');
file_put_contents($ssl_file, $_s['SSL_KEY']);
if ($_s['SSL_KEY']) {
$params = array(
'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'],
'SSL_KEY' => $_s['SSL_KEY']
'SSL_KEY' => $ssl_file
);
if ($_s['SSL_HOME']) {
if (!empty($_s['SSL_HOME'])) {
$params['SSL_HOME'] = $_s['SSL_HOME'];
}
@ -460,6 +480,26 @@ class WEB_DOMAIN extends AjaxHandler
}
}
if (!empty($_s['SSL_CERT'])) {
$sslcert_file = tempnam(sys_get_temp_dir(), 'ssl');
file_put_contents($sslcert_file, $_s['SSL_CERT']);
$params = array(
'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'],
'SSL_CERT' => $sslcert_file
);
$result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSLCERT, $params);
if (!$result['status']) {
$this->errors['SSL_CERT'] = array($result['error_code'] => $result['error_message']);
}
}
return $this->reply($result['status'], $result['data']);
}
@ -511,7 +551,7 @@ class WEB_DOMAIN extends AjaxHandler
$_entities = $request->getParameter('entities');
foreach($_entities as $entity){
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
}
return $this->reply($result['status'], $result['data']);
@ -523,7 +563,7 @@ class WEB_DOMAIN extends AjaxHandler
$_entities = $request->getParameter('entities');
foreach($_entities as $entity){
$result = Vesta::execute(Vesta::V_UNUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
$result = Vesta::execute(Vesta::V_UNUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
}
return $this->reply($result['status'], $result['data']);
@ -535,10 +575,9 @@ class WEB_DOMAIN extends AjaxHandler
$_entities = $request->getParameter('entities');
foreach($_entities as $entity){
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
}
return $this->reply($result['status'], $result['data']);
}
}