Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou com dificuldade em estruturar uma área restrita com acessos para diferentes grupos.
Já fiz algo semelhante, porém a nível de usuário.
Tenho as seguintes tabelas:
usuários
id
nome
grupoID
grupos
id
nome
sessoes
id
nome
grupos // Aqui estou guardandos os IDs dos grupos com permissão para acesso (1,2,3)
A ideia é permitir há alguns grupos, acessarem determinadas sessões.
Não sei se minha ideia é a ideal. Qual a melhor forma de se fazer?
Desde já agradeço à atenção.
>
A ideia é permitir há alguns grupos, acessarem determinadas sessões.
:seta: http://forum.imasters.com.br/topic/354705-sistema-de-privilgios/page__view__findpost__p__1342996
Adicionei mais uma tabela:
grupos_sessoes
CREATE TABLE NewTable (id tinyint(3) NOT NULL AUTO_INCREMENT ,sessaoID tinyint(3) NULL DEFAULT NULL ,grupoID tinyint(3) NULL DEFAULT NULL ,dataCadastro datetime NULL DEFAULT NULL ,adminID tinyint(3) UNSIGNED NULL DEFAULT NULL ,
PRIMARY KEY (id)
)
Assim permito que um GRUPO posso acessar determinadas sessões:
INSERT INTO `restrito_grupos_sessoes` VALUES ('1', '1', '1', '2011-11-23 15:18:26', '1');
INSERT INTO `restrito_grupos_sessoes` VALUES ('2', '2', '1', '2011-11-23 15:18:26', '1');
INSERT INTO `restrito_grupos_sessoes` VALUES ('3', '3', '1', '2011-11-23 15:18:26', '1');
INSERT INTO `restrito_grupos_sessoes` VALUES ('4', '4', '1', '2011-11-23 15:18:26', '1');
Criei uma função para verificar estas permissões e mostrar os menus. Até aí OK.
Na parte de acesso às páginas, fiz assim:
for($p = 1; $p <= $totalPermissoes; $p++) {
switch($_GET["areaID"]) {
case $permissoes[$p]:
if(verificarPermissao($_GET["areaID"], $permissoes)) {
$pasta = $cnx->query("SELECT pasta FROM grupos_sessoes WHERE id = " . $_GET['areaID'] . "")->fetch()->pasta;
if(isset($_GET["acao"])) {
if($_GET["acao"] == "add") {
include $pasta . '/adicionar.php';
}
elseif($_GET["acao"] == "editar") {
include $pasta . '/editar.php';
}
else {
include $pasta . '/home.php';
}
}
else {
include $pasta . '/home.php';
}
}
break;
}
Está funcionando. Porém gostaria de opiniões, desta forma está legal, há outras formas melhores?
Eu soh mudaria essa sua tabela de SESSOES, tiraria dela os grupos e criaria uma nova tabela onde você faria a relação dos GRUPOS x SESSOES.. e nessa nova tabela você criaria um registro pra cada relação.. ao invez de você colocar todos os grupos em um unico campo seperados por virgula
Acho que dessa forma seria mais facil de você trabalhar