系统访问管理库

v1.0.0 2017-02-26 01:29 UTC

This package is not auto-updated.

Last update: 2024-09-18 20:35:00 UTC


README

用于操作用户系统访问的库

使用

安装

composer require toneladas/acl

配置

您可以使用PDO "纯"连接或使用Doctrine实体来使用此库。

此库使用password_hashpassword_verify函数,因此当将用户数据保存到数据库时,请使用这些函数。

使用PDO "纯"连接

使用setWithDatabase配置连接

<?php

$conn = new \PDO('sqlite::memory:');

$acl = new \Toneladas\Acl();
$acl->setWithDatabase($conn); // Objeto da PDO usado para conexão no banco de dados
$acl->setTable('usuarios'); // Nome da tabela usada no banco para guardar os usuários
$acl->setFieldUser('email'); // Nome do campo na tabela usado como o nome do usuário
$acl->setFieldPassword('senha'); // Nome do campo na tabela usado como a senha do usuário

使用Doctrine实体

使用setWithDoctrine配置连接

<?php

$acl = new \Toneladas\Acl();
$this->acl->setWithDoctrine($entityManager); // Instancia do EntityManager do Doctrine
$this->acl->setEntity('\tests\Entities\User'); // Nome da entidade que refere-se a tabela de usuarios
$this->acl->setFieldUser('user'); // Nome no campo na tabela usado como o nome do usuário
$this->acl->setMethodPassword('getPassword'); // Metodo da entidade para pegar a senha

您还可以配置用户为电子邮件地址,这样库将验证表单中传入的电子邮件地址是否有效。

<?php

$acl->isEmail();

$acl->verify('usuario', '123'); // Irá jogar uma exception, pois 'usuario' não é um endereço de email válido

验证

要验证用户名和密码是否正确,请将来自表单的数据作为verify方法的参数传递。

<?php

try {
  $acl->verify($usuario, $senha);

  // Deu tudo certo, seguimos em frente
} catch (\Exception $exp) {
  // Alguma coisa deu errada
}

它可能返回三个异常

  • \Toneladas\Exceptions\UserWrongException:未在数据库中找到传递的用户
  • \Toneladas\Exceptions\PasswordWrongException:提供的密码不正确
  • \Toneladas\Exceptions\EmailInvalidException:如果您已将用户验证配置为电子邮件

您还可以根据不同情况分别处理异常

<?php

try {
  $acl->verify($usuario, $senha);

  // Deu tudo certo, seguimos em frente
} catch (\Toneladas\Exceptions\UserWrongException $exp) {
  // O usuário não foi encontrado, então faço alguma coisa
} catch (\Toneladas\Exceptions\PasswordWrongException $exp) {
  // A senha está incorreta, então faço outra coisa
}

请记住,最好不要告诉用户哪个出了问题,而只是告知发生了一个错误

我知道Doctrine也使用PDO与数据库连接

许可证

在MIT许可证下授权

有关详细信息,请参阅LICENSE文件。