定制 innovareti/password-policy 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

innovareti/password-policy

最新稳定版本:v1.4.4

Composer 安装命令:

composer require innovareti/password-policy

包简介

A library to intuitively create password policies and validate a subject against them.

README 文档

README

Para instalar primeiro rode o seguinte comando:

composer require innovareti/password-policy

Passo 2:

Dentro do projeto, no arquivo config/app.php insira o seguinte provider no array de providers:

    'providers' => [
        /*
         * Laravel Framework Service Providers...
         */
        PasswordPolicy\Providers\Laravel\PasswordPolicyServiceProvider::class,
    
        ...

E depois rode o comando:

php artisan passwordpolicy:install

Esse comando criará a tabela de politica de senha no projeto e forçará a troca de senha para usuários que possuem a senha "password", primeiro trocando a senha para uma aleatória e mandando um email para redefinição no endereço do usuário.

Passo 3:

Em seguida, adicione no arquivo app/Providers/AppServiceProvider.php, dentro da função boot o seguinte código:

use PasswordPolicy;
use App\Models\User;
use PasswordPolicy\Observers\UserObserver;
use PasswordPolicy\PolicyBuilder; 
    public function boot()
    {
        PasswordPolicy::define('default', function (PolicyBuilder $builder) {
            $builder->defaultRules();
        });    
        User::observe(UserObserver::class);
    }

Passo 4:

Agora para utilizar a validação de senha existente no pacote, vá na classe Request desejada (Ex: UserRequest) e insira a regra "password" nas regras da senha:

    public function rules()
    {
        $rules = [];
        $rules = [
             'name' => 'required',
             'email' => 'required|email|unique:users,email,' . request()->id,
             'cpf' => 'required|unique:users,cpf,' . request()->id,
             'password' => 'password' <--
        ];
        return $rules;
    }

Além disso, na função messages da Request você pode adicionar a mensagem de retorno automatizada do pacote:

use PasswordPolicy\Policy;
    public function messages()
    {
        return [
            'required' => ':attribute é obrigatório',
            'unique' => ':attribute informado já está sendo utilizado',
            'email' => 'O e-mail deve ser válido',
            'password' => Policy::validationMessage() //<--
        ];
    }

Essa mensagem retornara as regras de acordo com o que está definido dentro do pacote caso o usuário insira a senha incorreta.

Passo 5:

Na utilização da funcionalidade de forçar a troca de senha dos usuários a cada x tempo, é necessário adicionar o seguinte código no login do projeto:

use PasswordPolicy\Policy;
    /**
     * Method to authenticate User
     */
    public function auth(AuthRequest $request)
    {
    ...
    
    if(Policy::isPasswordExpired($user->id))
         return response()->json('Sua senha expirou! Um e-mail foi enviado no endereço '. $request->only(['email'])['email']. ' para redefinição da senha.', 401);  
    ...

E no .ENV as seguintes variáveis:

PASSWORD_POLICY_ACTIVE=true
PASSWORD_POLICY_DAYS=90

A variável PASSWORD_POLICY_ACTIVE estando "true" forçará a troca de senha dos usuários a cada x dias. Esses dias são definidos pela variável PASSWORD_POLICY_DAYS.

Notas:

1 - Caso as variáveis acima não estejam no .ENV, o pacote usa como padrão 90 dias e também não deixa essa troca de senha forçada ativa.

2 - A função "IsPasswordExpired" verificará de acordo com o ID do usuário passado se a senha deste está expirada ou não. Ela irá analisar a data da ultima vez que a senha do usuário foi atualizada. Essa data está contida na tabela que foi criada no comando de instalação (user_password_policies) e é atualizada atráves de um Observer (UserObserver) no pacote.

统计信息

  • 总下载量: 1.54k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2022-12-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固