Bernd Wurst commited on 2015-10-29 20:46:09
Zeige 4 geänderte Dateien mit 37 Einfügungen und 28 Löschungen.
| ... | ... |
@@ -28,6 +28,11 @@ if ($role & ROLE_SYSADMIN) {
|
| 28 | 28 |
unset($_SESSION['admin_user']); |
| 29 | 29 |
header('Location: '.$prefix.'go/su/su');
|
| 30 | 30 |
die(); |
| 31 |
+} elseif ($role & ROLE_CUSTOMER) {
|
|
| 32 |
+ setup_session($role, $admin_user); |
|
| 33 |
+ unset($_SESSION['admin_user']); |
|
| 34 |
+ header('Location: '.$prefix.'go/su/su_customer');
|
|
| 35 |
+ die(); |
|
| 31 | 36 |
} |
| 32 | 37 |
|
| 33 | 38 |
|
| ... | ... |
@@ -142,3 +142,31 @@ function build_results($term) {
|
| 142 | 142 |
} |
| 143 | 143 |
|
| 144 | 144 |
|
| 145 |
+function su($type, $id) {
|
|
| 146 |
+ $role = NULL; |
|
| 147 |
+ $admin_user = $_SESSION['userinfo']['username']; |
|
| 148 |
+ $_SESSION['admin_user'] = $admin_user; |
|
| 149 |
+ $role = find_role($id, '', True); |
|
| 150 |
+ if (!$role) {
|
|
| 151 |
+ unset($_SESSION['admin_user']); |
|
| 152 |
+ return False; |
|
| 153 |
+ } |
|
| 154 |
+ setup_session($role, $id); |
|
| 155 |
+ if ($type == 'c') {
|
|
| 156 |
+ if (! (ROLE_CUSTOMER & $_SESSION['role'])) {
|
|
| 157 |
+ session_destroy(); |
|
| 158 |
+ system_failure('Es wurde ein "su" zu einem Kundenaccount angefordert, das war aber kein Kundenaccount!');
|
|
| 159 |
+ } |
|
| 160 |
+ } elseif ($type == 'u') {
|
|
| 161 |
+ if (! (ROLE_SYSTEMUSER & $_SESSION['role'])) {
|
|
| 162 |
+ session_destroy(); |
|
| 163 |
+ system_failure('Es wurde ein "su" zu einem Benutzeraccount angefordert, das war aber kein Benutzeraccount!');
|
|
| 164 |
+ } |
|
| 165 |
+ } elseif ($type) {
|
|
| 166 |
+ // wenn type leer ist, dann ist es auch egal |
|
| 167 |
+ system_failure('unknown type');
|
|
| 168 |
+ } |
|
| 169 |
+ |
|
| 170 |
+ redirect('../../go/index/index');
|
|
| 171 |
+ die(); |
|
| 172 |
+} |
| ... | ... |
@@ -16,6 +16,10 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r |
| 16 | 16 |
|
| 17 | 17 |
$role = $_SESSION['role']; |
| 18 | 18 |
|
| 19 |
+if ($role & ROLE_CUSTOMER) |
|
| 20 |
+{
|
|
| 21 |
+ $menu["su_customer"] = array("label" => "Benutzer wechseln", "file" => "su_customer", "weight" => -10, "submenu" => "systemuser_account");
|
|
| 22 |
+} |
|
| 19 | 23 |
if ($role & ROLE_SYSADMIN) |
| 20 | 24 |
{
|
| 21 | 25 |
$menu["su_su"] = array("label" => "Su-Login", "file" => "su", "weight" => -10);
|
| ... | ... |
@@ -24,34 +24,6 @@ require_once('su.php');
|
| 24 | 24 |
require_role(ROLE_SYSADMIN); |
| 25 | 25 |
|
| 26 | 26 |
|
| 27 |
-function su($type, $id) {
|
|
| 28 |
- $role = NULL; |
|
| 29 |
- $admin_user = $_SESSION['userinfo']['username']; |
|
| 30 |
- $_SESSION['admin_user'] = $admin_user; |
|
| 31 |
- $role = find_role($id, '', True); |
|
| 32 |
- if (!$role) {
|
|
| 33 |
- unset($_SESSION['admin_user']); |
|
| 34 |
- return False; |
|
| 35 |
- } |
|
| 36 |
- setup_session($role, $id); |
|
| 37 |
- if ($type == 'c') {
|
|
| 38 |
- if (! (ROLE_CUSTOMER & $_SESSION['role'])) {
|
|
| 39 |
- session_destroy(); |
|
| 40 |
- system_failure('Es wurde ein "su" zu einem Kundenaccount angefordert, das war aber kein Kundenaccount!');
|
|
| 41 |
- } |
|
| 42 |
- } elseif ($type == 'u') {
|
|
| 43 |
- if (! (ROLE_SYSTEMUSER & $_SESSION['role'])) {
|
|
| 44 |
- session_destroy(); |
|
| 45 |
- system_failure('Es wurde ein "su" zu einem Benutzeraccount angefordert, das war aber kein Benutzeraccount!');
|
|
| 46 |
- } |
|
| 47 |
- } elseif ($type) {
|
|
| 48 |
- // wenn type leer ist, dann ist es auch egal |
|
| 49 |
- system_failure('unknown type');
|
|
| 50 |
- } |
|
| 51 |
- |
|
| 52 |
- redirect('../../go/index/index');
|
|
| 53 |
- die(); |
|
| 54 |
-} |
|
| 55 | 27 |
|
| 56 | 28 |
if (isset($_GET['do'])) |
| 57 | 29 |
{
|
| 58 | 30 |