admaja / ritual-auth

该软件包最新版本(dev-master)没有可用的许可信息。

认证和活动日志记录软件包

dev-master 2022-02-06 02:46 UTC

This package is auto-updated.

Last update: 2024-09-06 08:12:46 UTC


README

  • 安装 => composer require admaja/ritual-auth
  • 配置
    • 对于laravel:打开文件config/app.php,添加提供者Admaja\RitualAuth\RitualAuthServiceProvider::class
    • 对于lumen:打开文件bootstrap/app.php,添加提供者 $app->register(Admaja\RitualAuth\RitualAuthServiceProvider::class);

然后,发布软件包 => php artisan ritualauth:publish。

下一步

  1. 删除Laravel的用户迁移文件

  2. 为SeetingTable表创建 Seeder

    $rules = [
        "auth" => [
            "unique_code_type" => "email",
            "can_register" => true,
            "attempts" => 3,
        ],
    ];
    
    Setting::create([
        "last_updated_by" => "master",
        "rules" => json_encode($rules),
        "status" => "active" 
    ]);
    
    

    然后,播种这个类,您可以根据需要自定义SettingTable中的值,但上述代码是必须的。

  3. 安装 composer require hisorange/browser-detect,浏览器检测

    使用示例

    public function authenticate(Request $request)
    {
        $credentials = $this->validateAuth($request);
    
        $ritual = RitualAuth::attempt($request, $credentials);
    
        if($ritual["data"]->status == "blocked"){
            return back()->withErrors([
                'email' => 'Maaf anda tidak bisa login untuk beberapa saat',
            ]);
        }
    
        if($ritual["status"] == true){
            return "success";
        }
    
        return back()->withErrors([
            'email' => 'Email atau Password salah, silahkan cek kembali email dan password anda',
        ]);
    }
    
    protected function validateAuth($request)
    {
        return $request->validate([
            $this->username() => 'required|email',
            'password' => 'required',
        ]);
    }
    
    protected function username()
    {
        return "email";
    }
    
    public function logout(Request $request)
    {
        LoginInformation::where("user_id", auth()->user()->id)->update([
            "status" => "logout"
        ]);
    
        $request->session()->invalidate();
    
        return $request->wantsJson() ? new JsonResponse([], 204) : redirect()->route('auth.login.index');
    }