mentalrob/laravel-steam-auth

Laravel 7 的 Steam 认证

v1.0.1 2020-04-26 10:40 UTC

This package is auto-updated.

Last update: 2024-09-28 02:17:42 UTC


README

Latest Stable Version Total Downloads License

该软件包允许你在 Laravel 项目中实现 Steam 认证。

要求

  • Laravel 8+
  • Guzzle HTTP 6.5+

安装

安装软件包

composer require mentalrob/laravel-steam-auth

发布配置文件

php artisan vendor:publish --provider="Ilzrv\LaravelSteamAuth\ServiceProvider"

设置 Steam API 密钥

将你的 Steam API 密钥添加到 .env 文件中。你可以在这里找到它。

如果你想使用多个 API 密钥,只需用逗号分隔即可

STEAM_AUTH_API_KEYS=YourSteamApiKey1,YourSteamApiKey2

示例

routes/web.php

Route::get('login', 'Auth\SteamAuthController@login');

创建控制器 SteamAuthController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use Illuminate\Support\Facades\Auth;
use Ilzrv\LaravelSteamAuth\SteamAuth;
use Ilzrv\LaravelSteamAuth\SteamData;

class SteamAuthController extends Controller
{
    /**
     * The SteamAuth instance.
     *
     * @var SteamAuth
     */
    protected $steamAuth;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * SteamAuthController constructor.
     *
     * @param SteamAuth $steamAuth
     */
    public function __construct(SteamAuth $steamAuth)
    {
        $this->steamAuth = $steamAuth;
    }

    /**
     * Get user data and login
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    public function login()
    {
        if (!$this->steamAuth->validate()) {
            return $this->steamAuth->redirect();
        }

        $data = $this->steamAuth->getUserData();

        if (is_null($data)) {
            return $this->steamAuth->redirect();
        }

        Auth::login(
            $this->firstOrCreate($data),
            true
        );

        return redirect($this->redirectTo);
    }

    /**
     * Get the first user by SteamID or create new
     *
     * @param SteamData $data
     * @return User|\Illuminate\Database\Eloquent\Model
     */
    protected function firstOrCreate(SteamData $data)
    {
        return User::firstOrCreate([
            'steam_id' => $data->getSteamId(),
        ], [
            'name' => $data->getPersonaName(),
            'avatar' => $data->getAvatarFull(),
            'player_level' => $data->getPlayerLevel(),
            // ...and other what you need
        ]);
    }
}