1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 20:30:39 +02:00

Issue #5476 Copy/Paste user permissions option added.

This commit is contained in:
camer0n
2025-05-14 05:53:30 -07:00
parent 5e933e8fec
commit f275084f6c

View File

@@ -189,6 +189,20 @@ JS;
->setMode('main')
->setAction('emulate');
break;
case 'copyperms':
$this->getRequest()
->setQuery(array())
->setMode('main')
->setAction('copyperms');
break;
case 'pasteperms':
$this->getRequest()
->setQuery(array())
->setMode('main')
->setAction('pasteperms');
break;
// redirect to AdminObserver/AdminPage()
case 'admin':
@@ -891,6 +905,50 @@ class users_admin_ui extends e_admin_ui
$this->redirect('list', 'main', true);
}
public function copypermsPage()
{
if(getperms('0') && !empty($_POST['userid']))
{
$uid = (int) $_POST['userid'];
e107::getSession()->set('copyperms',$uid);
$user = e107::user($uid);
e107::getMessage()->addSuccess("Copied permissions of <strong>".$user['user_name']."</strong> to clipboard.", 'default', true);;
}
$this->redirect('list', 'main', false);
}
public function pastepermsPage()
{
$originUser = (int) e107::getSession()->get('copyperms', true);
if(getperms('0') && !empty($_POST['userid']) && $originUser)
{
if(!$user = e107::getDb()->retrieve('user', 'user_name, user_admin, user_class, user_perms', 'user_id='.$originUser))
{
e107::getMessage()->addError("Failed to retrieve user permissions.", 'default', true);
return;
}
$destUser = (int) $_POST['userid'];
$sysuser = e107::getSystemUser($destUser, false);
$result = $sysuser->set('user_perms', $user['user_perms'])
->set('user_class', $user['user_class'])
->save();
$name = $sysuser->getName();
e107::getMessage()->addSuccess("Copied permissions from <strong>".$user['user_name']."</strong> to <strong>$name</strong>.", 'default', true);;
}
$this->redirect('list', 'main', false);
}
/**
* Remove admin status trigger
@@ -2820,6 +2878,16 @@ class users_admin_form_ui extends e_admin_form_ui
if(getperms('0'))
{
$opts['emulate'] = 'Emulate permissions';
if(e107::getSession()->get('copyperms'))
{
$opts['pasteperms'] = 'Paste permissions';
}
else
{
$opts['copyperms'] = 'Copy permissions';
}
}
$opts['adminperms'] = USRLAN_221;