bikefreaks/logto-auth

这是我包装的logto-auth

dev-main 2024-09-04 10:51 UTC

This package is auto-updated.

Last update: 2024-09-04 10:51:35 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是您的描述应该出现的地方。请限制为一两段。考虑添加一个小示例。

安装

您可以通过composer安装此包

composer require bikefreaks/logto-auth

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="logto-auth-config"

这是发布配置文件的内容

return [
    'endpoint' => env('LOG_TO_ENDPOINT'),
    'app_id' => env('LOG_TO_APP_ID'),
    'app_secret' => env('LOG_TO_APP_SECRET'),
    'lee_way' => env('LOG_TO_LEE_WAY', 15),
];

使用方法

// app/Policies/AppServiceProvider.php
      use BeraniDigital\LibraryLaravelLogtoIo\Facades\LibraryLaravelLogtoIo;
    public function register(): void
    {
        
        LibraryLaravelLogtoIo::config()->scopes = [
            \Logto\Sdk\Constants\UserScope::profile,
            \Logto\Sdk\Constants\UserScope::email,
            \Logto\Sdk\Constants\UserScope::phone,
            \Logto\Sdk\Constants\UserScope::identities,
            \Logto\Sdk\Constants\UserScope::roles,
        ];
        LibraryLaravelLogtoIo::config()->resources = [
          // add your resources here
        ];
    }
// routes/web.php
Route::get('/callback', function () {
    try {
        \bikefreaks\LogtoAuth\Facades\LogtoAuth::handleSignInCallback();
    }catch (\Logto\Sdk\LogtoException $e){
        return redirect()->route('login')->with('error', $e->getMessage());
    }
    $logToUser = \bikefreaks\LogtoAuth\Facades\LogtoAuth::fetchUserInfo();
    $user = \App\Models\User::where(config('logto-auth.user_id_field'), $logToUser->sub)->first();
    if(!$user){
        $user = new \App\Models\User;
        $user->logto_id = $logToUser->sub;
        $faker = \Faker\Factory::create();
        $user->name = $logToUser->name ?? $logToUser->username ?? $logToUser->email ?? $faker->numerify('User ####');
    }
    // always fetch latest user's email and phone number after login
    if(config('logto-auth.save_phone')) {
    $user->phone = $logToUser->phone_number;
    }
    
    $user->email = $logToUser->email;
    $user->email_verified_at = $logToUser->email_verified ? now() : null;
    $user->save();

    \Illuminate\Support\Facades\Auth::login($user);
    return redirect()->route('home');
})->name('auth.callback');

Route::get('/login', function () {
    return redirect(bikefreaks\LogtoAuth\Facades\LogtoAuth::signIn(route('auth.callback')));
})->name('login');

function logout() {
    \Illuminate\Support\Facades\Auth::logout();
    return redirect(bikefreaks\LogtoAuth\Facades\LogtoAuth::signOut(route('home')));
}
Route::get('/logout', function () {
    return logout();
})->name('logout');

测试

composer test

变更日志

请参阅变更日志了解最近更改的详细信息。

贡献

请参阅贡献指南了解详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件了解详细信息。