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 |