shell bypass 403
<?
App::uses('PrivateController', 'Controller');
class PrivateUsuariosController extends PrivateController {
public function beforeFilter() {
parent::beforeFilter();
array_push($this->uses, 'Usuario');
}
public function home() {
//Generamos el filtro...
$filtro = array(
'nombre' => null,
'email' => null,
);
$this->set('filtro', $filtro);
$this->getListado('Usuario', 20, $this->App->getOrden('Usuario'), $this->getConditionsFiltro($filtro));
$this->renderView();
}
public function add() {
if ($this->request->is('post')) {
$this->Usuario->create();
unset($this->request->data['Usuario']['id'], $this->request->data['Usuario']['admin'], $this->request->data['Usuario']['created'], $this->request->data['Usuario']['modified']); //campos que no son modificables por el usuario
if ($this->Usuario->save($this->request->data)) {
$this->Session->setFlash('Usuario añadido con éxito.' . $this->btnClose, 'default', array('class' => 'alert alert-success'));
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'edit', 'id' => $this->Usuario->id));
} else {
$this->errores = $this->Usuario->validationErrors;
}
}
$this->renderView();
}
public function edit() {
$this->Usuario->id = $this->params->id;
if (!$this->Usuario->exists()) {
$this->Session->setFlash('Usuario no encontrado.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'home'));
}
$usuario = $this->Usuario->findById($this->Usuario->id);
if ($this->request->is('put') || $this->request->is('post')) {
//Usuario
if (!empty($this->request->data['Usuario'])) {
unset($this->request->data['Usuario']['id'], $this->request->data['Usuario']['clave'], $this->request->data['Usuario']['created'], $this->request->data['Usuario']['modified']); //campos que no son modificables por el usuario
if ($this->Usuario->save($this->request->data)) {
//Si editamos información del usuario logueado...
if ((int) $this->Usuario->id == (int) $this->usuario['id']) {
$usuario = $this->Usuario->findById($this->Usuario->id);
//Establecemos los nuevos valores del usuario en cookie
$user = $usuario['Usuario'];
$user['Empresa'] = $usuario['Empresa'];
$this->Session->write('Auth.User', $user);
if ($this->Cookie->check('Usuario')) {
$this->Cookie->write('Usuario', serialize(array('email' => $usuario['Usuario']['email'], 'clave' => $usuario['Usuario']['clave'])));
}
}
$this->Session->setFlash('Usuario actualizado con éxito.' . $this->btnClose, 'default', array('class' => 'alert alert-success'));
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'edit', 'id' => $this->Usuario->id, 'tab' => $this->params->tab));
} else {
$this->errores = $this->Usuario->validationErrors;
}
}
//Modificar clave
if (!empty($this->request->data['ModificarClave'])) {
array_push($this->uses, 'ModificarClave');
$this->ModificarClave->create();
$this->ModificarClave->set($this->request->data);
if ($this->ModificarClave->validates()) {
$db = $this->Usuario->getDataSource();
$this->Usuario->updateAll(array('Usuario.clave' => $db->value(AuthComponent::password($this->request->data['ModificarClave']['clave']), 'string')), array('Usuario.id' => $this->Usuario->id));
//Si editamos información del usuario logueado...
if ((int) $this->Usuario->id == (int) $this->usuario['id']) {
$usuario = $this->Usuario->findById($this->Usuario->id);
//Establecemos los nuevos valores del usuario
$user = $usuario['Usuario'];
$user['Empresa'] = $usuario['Empresa'];
$this->Session->write('Auth.User', $user);
if ($this->Cookie->check('Usuario')) {
$this->Cookie->write('Usuario', serialize(array('email' => $usuario['Usuario']['email'], 'clave' => $usuario['Usuario']['clave'])));
}
}
$this->Session->setFlash('Clave modificada con éxito.' . $this->btnClose, 'default', array('class' => 'alert alert-success'), 'flash');
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'edit', 'id' => $this->Usuario->id, 'tab' => $this->params->tab));
} else {
$this->errores = $this->ModificarClave->validationErrors;
}
}
} else {
$this->request->data = $usuario;
}
unset($this->request->data['ModificarClave']['clave'], $this->request->data['ModificarClave']['clave_rep']);
$this->set('user', $usuario);
$this->renderView();
}
public function delete() {
$this->Usuario->id = $this->params->id;
if (!$this->Usuario->exists()) {
$this->Session->setFlash('Usuario no encontrado.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'home'));
}
if ($this->Usuario->delete()) {
$this->Session->setFlash('Usuario eliminado con éxito.' . $this->btnClose, 'default', array('class' => 'alert alert-success'));
} else {
$this->Session->setFlash('El usuario no pudo ser eliminado.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
}
$this->redirect(array('controller' => 'private_usuarios', 'action' => 'home'));
}
}