2017 © Pedro Peláez
 

library frobou-system-permission

Frobou System Permissions

image

frobou/frobou-system-permission

Frobou System Permissions

  • Monday, April 2, 2018
  • by blobs.frobou
  • Repository
  • 2 Watchers
  • 0 Stars
  • 91 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 14 Versions
  • 1 % Grown

The README.md

Frobou System Permission

SensioLabsInsight, (*1)

Sistema de verificação de permissões de uso., (*2)

Como funciona: As permissões são verificadas onde são necessárias, como mostra o exemplo:, (*3)

$config = new FrobouDbConfig(json_decode(file_get_contents(__DIR__ . './../database.json')));
$connection = new FrobouDbConnection($config);
$perms = new FrobouSystemPermission($connection);
$user = $this->perms->login('test', 'pass', true);
$exp = $user->getPermission('admin');
var_dump($exp);
object(stdClass)#140 (4) {
  ["can_select"]=>
  bool(true)
  ["can_insert"]=>
  bool(false)
  ["can_update"]=>
  bool(true)
  ["can_delete"]=>
  bool(false)
}
if ($exp->can_select){
    echo "I can";
}

A ideia é ter permissões com níveis hierárquicos, admin.teste diz que o usuário tem permissão X no recurso teste da tela admin, (*4)

Usamos o pacote frobou-db-connect para a conexão com banco de dados. Ao instanciar FrobouSystemPermission, todos os recursos necessários ficam disponíveis., (*5)

  • login($username, $password, $pass_in_plain = false)
  • getUserList()
  • getUserTypes()
  • createUser(SystemUser $user)
  • updateUser(SystemUser $user, array $where)
  • deleteUser($username)
  • undeleteUser($username)
  • createGroup($name)
  • getGroupList()
  • createResource($name, $permission)
  • registerGroupResource($username, $resourcename)
  • unregisterGroupResource($username, $resourcename)
  • registerUserResource($username, $resourcename)
  • unregisterUserResource($username, $resourcename)

e a instância de SystemUser recebida no métido login fornece, além dos dados do usuário:, (*6)

  • getPermission($resource, $separator = '.')
  • getInsertString()
  • getUpdateString(array $where)
  • getSqlParams()

Tipos de permissões:, (*7)

  • Permissões por grupo.
  • Permissões por usuário.
  • Permissões unificadas:
    • ver MERGE_PERMISSIONS

Usando:

Algumas constantes podem ser usada como uma forma de configuração do sistema., (*8)

  • MERGE_PERMISSIONS - Boolean: true faz com que as permissões de usuário subscrevam as permissões de grupo de mesmo nome e mescla ambos, passando a fornecer a junção das permissões resultantes.
  • BASE_PERMISSION - Boolean: true significa que se existirem permissões base, o valor atribuído a elas são retornados, caso contrario a permissão é 0
  • PASSWORD_SALT - String: o valor padrão é "default", se for informado um valor, ele será usado para a geração de senha. Obs: uma senha gerada com um salt não será validada se o valor de PASSWORD_SALT for alterado
  • TRUE_DELETE - Boolean: caso seja true, o registro do usuário será efetivamente excluído, caso contrário, somente desativado. Obs: não existe tratamento pra exclusão das relações entre tabelas, o que significa que, antes de excluir o usuário, todos os registros vinculados devem ser excluídos, criando uma exception do tipo FrobouDbSgdbErrorException

Testando login, (*9)

public function testLoginOk()
{
    $user = $this->perms->login('test', 'pass', true);
    $this->assertInstanceOf(SystemUser::class, $user);
}

Testando permissões, (*10)

public function testPermissionForResourceAdminDotTeste()
{
    $user = $this->perms->login('test', 'pass', true);
    $exp = new \stdClass();
    $exp->can_select = true;
    $exp->can_insert = true;
    $exp->can_update = true;
    $exp->can_delete = true;
    $this->assertEquals($user->getPermission('admin.teste'), $exp);
}

Criando um grupo, (*11)

public function testInsertGroup()
{
    $this->assertTrue($this->perms->createGroup('grp_' . rand(0, 15988)));
}

Criando uma permissão, (*12)

public function testInsertResource()
{
    $this->assertTrue($this->perms->createResource('admin.test', 0));
}

Criando um usuário, (*13)

public function testInsertUser()
{
    $user = new SystemUser();
    $user->setActive(1)->setCanEdit(1)->setCanLogin(1)->setCanUseApi(1)
        ->setCanUseWeb(1)->setCreateDate()->setEmail('capitao@caverna.com')->setName('Novo Usuario')
        ->setPassword('senhanha')->setSystemGroup(1)->setUsername('username_' . rand(0, 12345))->setUserType('T');
    $this->assertTrue($this->perms->createUser($user));
}

Vinculando grupo X permissão, (*14)

public function testRegisterGroupResource()
{
    $this->perms->createResource('admin.com', 3);
    $this->assertTrue($this->perms->registerGroupResource('user', 'admin.com'));
}

Desvinculando grupo X permissão, (*15)

public function testUnRegisterGroupResource()
{
    $this->perms->createResource('admin.com', 3);
    $this->assertTrue($this->perms->unregisterGroupResource('user', 'admin.com'));
}

Vinculando user X permissão, (*16)

public function testRegisterUserResource()
{
    $this->perms->createResource('admin.com', 7);
    $this->assertTrue($this->perms->registerUserResource('ispti', 'admin.com'));
}

Desvinculando user X permissão, (*17)

public function testRegisterUserResource()
{
    $this->perms->createResource('admin.com', 7);
    $this->assertTrue($this->perms->unregisterUserResource('ispti', 'admin.com'));
}

Testando Remover usuário (desativar), (*18)

public function testDeleteUser(){
    $username = 'username_' . rand(0, 12345);
    $user = new SystemUser();
    $user->setActive(1)->setCanEdit(1)->setCanLogin(1)->setCanUseApi(1)
        ->setCanUseWeb(1)->setCreateDate()->setEmail('capitao@caverna.com')->setName('Novo Usuario')
        ->setPassword('senhanha')->setSystemGroup(1)->setUsername($username)->setUserType('T');
    $this->perms->createUser($user);
    $this->perms->createResource('admin.com', 3);
    $this->perms->registerGroupResource($username, 'admin.com');
    $this->perms->registerUserResource($username, 'admin.com');
    $this->assertTrue($this->perms->deleteUser($username));
}

Testando reativar usuário, (*19)

public function testUndeleteUser(){
    $username = 'fabio';
    $user = new SystemUser();
    $user->setActive(1)->setCanEdit(1)->setCanLogin(1)->setCanUseApi(1)
        ->setCanUseWeb(1)->setCreateDate()->setEmail('capitao@caverna.com')->setName('Novo Usuario')
        ->setPassword('senhanha')->setSystemGroup(1)->setUsername($username)->setUserType('T');
    $this->perms->createUser($user);
    $this->perms->deleteUser($username);
    $this->assertTrue($this->perms->undeleteUser($username));
}

Testando remover usuário (realmente), (*20)

public function testDeleteUserReal(){
    define('TRUE_DELETE', true);
    $username = 'username_' . rand(0, 12345);
    $user = new SystemUser();
    $user->setActive(1)->setCanEdit(1)->setCanLogin(1)->setCanUseApi(1)
        ->setCanUseWeb(1)->setCreateDate()->setEmail('capitao@caverna.com')->setName('Novo Usuario')
        ->setPassword('senhanha')->setSystemGroup(1)->setUsername($username)->setUserType('T');
    $this->perms->createUser($user);
    $this->assertTrue($this->perms->deleteUser($username));
}

The Versions

02/04 2018

dev-master

9999999-dev http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

11/01 2018

dev-multi-empresa

dev-multi-empresa http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

09/11 2017

1.0.11

1.0.11.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

08/11 2017

1.0.10

1.0.10.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

17/04 2017

1.0.9

1.0.9.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

13/04 2017

1.0.8

1.0.8.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

11/04 2017

1.0.7

1.0.7.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

01/02 2017

1.0.6

1.0.6.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

09/01 2017

1.0.5

1.0.5.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

06/01 2017

1.0.4

1.0.4.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

03/12 2016

1.0.3

1.0.3.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

03/12 2016

1.0.2

1.0.2.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

02/12 2016

1.0.1

1.0.1.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta

02/12 2016

1.0.0

1.0.0.0 http://frobou.com.br

Frobou System Permissions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Fabio Pimenta