truckersmp / laravel-steam-auth

Laravel Steam Auth - TruckersMP

v3.5.1 2020-12-03 13:57 UTC

This package is auto-updated.

Last update: 2024-08-29 05:41:04 UTC


README

Code Climate Latest Stable Version Total Downloads License

本包是一个Laravel 5服务提供者,它提供了对Steam OpenID的支持,并且非常容易与任何需要Steam身份验证的项目集成。

通过Composer安装

将以下内容添加到您的composer.json文件的require对象中

"truckersmp/laravel-steam-auth": "3.*"

之后,运行composer install以安装包。

Laravel 5.4及以下版本

将服务提供者添加到app/config/app.php文件中的providers数组。

'providers' => [
	// ...
	Invisnik\LaravelSteamAuth\SteamServiceProvider::class,
]

如果您使用的是Laravel 5.5,包会自动添加。

Steam API密钥

将您的Steam API密钥添加到.env文件中。您可以在这里获取您的API密钥。

STEAM_API_KEY=SomeKindOfAPIKey

配置文件

最后,发布配置文件。

php artisan vendor:publish

使用示例

config/steam-auth.php

return [

    /*
     * Redirect URL after login
     */
    'redirect_url' => '/auth/steam/handle',
    /*
     * Realm override. Bypass domain ban by Valve. Use alternative domain with redirection to main for authentication (banned by valve).
     */
    // 'realm' => 'redirected.com',
    /*
     *  API Key (set in .env file) [http://steamcommunity.com/dev/apikey]
     */
    'api_key' => env('STEAM_API_KEY', ''),
    /*
     * Is using https?
     */
    'https' => false,
];

routes/web.php

Route::get('auth/steam', 'AuthController@redirectToSteam')->name('auth.steam');
Route::get('auth/steam/handle', 'AuthController@handle')->name('auth.steam.handle');

注意:如果您想继续使用Laravel的默认退出路由,请添加以下内容

Route::post('logout', 'Auth\LoginController@logout')->name('logout');

AuthController

namespace App\Http\Controllers;

use Invisnik\LaravelSteamAuth\SteamAuth;
use App\User;
use Auth;

class AuthController extends Controller
{
    /**
     * The SteamAuth instance.
     *
     * @var SteamAuth
     */
    protected $steam;

    /**
     * The redirect URL.
     *
     * @var string
     */
    protected $redirectURL = '/';

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

    /**
     * Redirect the user to the authentication page
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function redirectToSteam()
    {
        return $this->steam->redirect();
    }

    /**
     * Get user info and log in
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function handle()
    {
        if ($this->steam->validate()) {
            $info = $this->steam->getUserInfo();

            if (!is_null($info)) {
                $user = $this->findOrNewUser($info);

                Auth::login($user, true);

                return redirect($this->redirectURL); // redirect to site
            }
        }
        return $this->redirectToSteam();
    }

    /**
     * Getting user by info or created if not exists
     *
     * @param $info
     * @return User
     */
    protected function findOrNewUser($info)
    {
        $user = User::where('steamid', $info->steamID64)->first();

        if (!is_null($user)) {
            return $user;
        }

        return User::create([
            'username' => $info->personaname,
            'avatar' => $info->avatarfull,
            'steamid' => $info->steamID64
        ]);
    }
}

如果您希望使用与配置中指定的不同的登录重定向URL

// Inside your controller login method
$this->steam->setRedirectUrl(route('login.route'));

...

return $this->steam->redirect();

如果您需要另一个steamID,可以使用其他包将给定的steamID64转换为其他类型,例如 xPaw/SteamID