Bonjour,
Je veux sécuriser la modification et la création à partir d'un formlaire en se basant sur l'ID de l'utilisateur qui est connecté, et une autre table qui contient l'ID de sa sté, les tables des formulaires contiennent le champ ID de la sté.
Ces deux informations sont stockés en session, et du coup je veux créer une fonction dans le AppController (isAllow) , avez vous une idée SVP sur la procédure ?
Merci
tu fais un controle au chargement de ta page
avec un beforeFilter sur ton controlleur ou tu examine la table et les droit ou non de l'utilisateur
Bonjour,
finalement, je crois que j'ai trouver la meilleure solution à mon prob de sécurité.
J'ai créer une fonction dans mon appController
public function isAllow()
{
$id = (int)$this->request->params['pass'][0];
$model = $this->modelClass;
if ($id) {
$d = $this->$model->field('id', array('id' => $id, 'Account_id' => $this->Session->read('Auth.Account.id')));
if ($d !== false) {
return true;
} else {
throw new NotFoundException('Une erreur s\'est produite');
}
}
}
et je fais appel a cette fonction dans chaque controlleur dans beforeFilter().
en attendant de trouver quelque chose de meilleur.
Bonjour.
C'est le formulaire que vous voulez sécuriser ou l'accès à une action ou des actions selon ses informations utilisateur ?
Car pour information, il y a un callback déja existant concernant les utilisateurs connectés qui se nomme isAuthorized.
Bonjour,
J'explique :
J'ai une table Users qui contient les login / pass => ID
J'ai une autre table Accounts qui contient les sociétés => relié par user_id à la table users
et d'autres tables qui contiennent par examples les employés des sociétés => elle sont reliés par un AccountID à la table Accounts
Je veux eviter la falsification des informations :
par example : le lien pour edition est http://*******/add/13, et si je fais http://*****/add/14 et que ce dernier n'appartient pas à la sté connecté, il doit lui répondre throw notFound**, pour l'empecher de voir le contenu qui n'est pas le sien.
Merci
bonjour romain, d'ailleur cest ce que j'ai fais mais par contre est ce que je peux utiliser cette fonction dans mon appController pour éviter de l'ecrire dans mes 200 controlleurs ?
merci