public function doSelfSuid()
{
- if (!$this->startSUID(S::i('uid'))) {
+ $user =& S::user();
+ if (!$this->startSUID($user)) {
return false;
}
S::set('perms', User::makePerms('user'));
if (!S::logged()) {
S::set('auth', AUTH_COOKIE);
}
- return S::i('auth_by_cookie');
+ return User::getSilentWithValues(null, array('user_id' => S::i('auth_by_cookie')));
}
protected function startSessionAs($user, $level)
{
- if (!($user instanceof User)) {
- $user = User::getSilent($user);
- if ($user === false) {
- return false;
- }
- }
if ((!is_null(S::v('user')) && S::i('user') != $user->id())
|| (S::has('uid') && S::i('uid') != $user->id())) {
return false;
{
return array(
'phpinfo' => $this->make_hook('phpinfo', AUTH_MDP, 'admin'),
+ 'get_rights' => $this->make_hook('get_rights', AUTH_MDP, 'admin'),
'admin' => $this->make_hook('default', AUTH_MDP, 'admin'),
'admin/ax-xorg' => $this->make_hook('ax_xorg', AUTH_MDP, 'admin'),
'admin/dead-but-active' => $this->make_hook('dead_but_active', AUTH_MDP, 'admin'),
exit;
}
+ function handler_get_rights(&$page, $level)
+ {
+ if (S::suid()) {
+ $page->kill('Déjà en SUID');
+ }
+ $user =& S::user();
+ Platal::session()->startSUID($user, $level);
+
+ pl_redirect('/');
+ }
+
function handler_default(&$page)
{
$page->changeTpl('admin/index.tpl');
}
if(Env::has('suid_button') && $registered) {
- if (!Platal::session()->startSUID($user->id())) {
+ if (!Platal::session()->startSUID($user)) {
$page->trigError('Impossible d\'effectuer un SUID sur ' . $user->id());
} else {
pl_redirect("");