array('regex'=>'auth/user/([\w\_\-]+)/password/$#i', 'func'=>'IPF_Admin_Views_ChangePassword'),
array('regex'=>'login/$#i', 'func'=>'IPF_Admin_Views_Login'),
array('regex'=>'logout/$#i', 'func'=>'IPF_Admin_Views_Logout'),
+ array('regex'=>'auth/user/(\d+)/impersonate/$#', 'func'=>'IPF_Admin_Views_Impersonate'),
);
}
return IPF_Shortcuts::RenderToResponse('admin/logout.html', $context, $request);
}
+function IPF_Admin_Views_Impersonate($request, $match)
+{
+ $success_url = '';
+ if (!empty($request->REQUEST['next']))
+ $success_url = trim($request->REQUEST['next']);
+ if (!$success_url)
+ $success_url = IPF_HTTP_URL::urlForView('IPF_Admin_Views_Index');
+
+ if (!$request->user->isAnonymous() && $request->user->is_superuser) {
+ $user = IPF_Shortcuts::GetObjectOr404('User', $match[1]);
+ IPF_Auth_App::login($request, $user);
+ }
+
+ return new IPF_HTTP_Response_Redirect($success_url);
+}
+
function cmp($a, $b)
{
if ($a['name'] == $b['name'])
$extra['model'] = $model_obj;
return new IPFAuthAdminUserForm($data, $extra);
}
+
+ protected function objectTools($user)
+ {
+ return array(
+ 'impersonate' => IPF_HTTP_URL::urlForView('IPF_Admin_Views_Impersonate', array($user->id)),
+ );
+ }
}
class User extends BaseUser