定制 knojector/steam-authentication-bundle 二次开发

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

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

knojector/steam-authentication-bundle

最新稳定版本:1.4.0

Composer 安装命令:

composer require knojector/steam-authentication-bundle

包简介

Symfony Bundle to integrate Steam authentication

README 文档

README

GitHub license GitHub issues GitHub issues GitHub issues Packagist Downloads

SteamAuthenticationBundle - Steam authentication for Symfony

The SteamAuthenticationBundle provides an easy way to integrate Steams OpenID login for your application.

Table of Contents

Installation

Step 1 - Install the bundle

composer require knojector/steam-authentication-bundle

Step 2 - Configuration

knojector_steam_authentication:
    login_success_redirect: 'app.protected_route'
    login_failure_redirect: 'app.error_route'

As you can see there are only two options available for configuration. Both are very self-explanatory. The option login_success_redirect contains the name of the route the user should be redirected to if the login was successful. The option login_failure_redirect contains the route the user is redirected to if the login fails.

Furthermore you have to adjust your security.yml. In the following snippet you can see an example with a basic configuration. There are only two important things to consider:

  • The firewall name must be steam
  • You can use any user provider as long as the Steam CommunityId is the property to query for
security:
    providers:
        users:
            entity:
                class: 'App\Entity\User'
                property: 'username'
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        steam:
            pattern: ^/
            lazy: true
            provider: users

The final step is to enable the bundle's controller in your routes.yaml

steam_authentication_callback:
  path: /steam/login_check
  controller: Knojector\SteamAuthenticationBundle\Controller\SteamController::callback

Usage

Step 1 - Create your own registration subscriber

Technically there is no registration available in this bundle. The bundle receives an ID from Steam and tries to load a user via the configured user provider. If no user exists you can assume that the user logged in for the first time. Instead of throwing an exception, the bundle dispatches an event you can subscribe to. A simple example for your subscriber is shown below

<?php

namespace App\Subscriber;

use App\Entity\User;
use Knojector\SteamAuthenticationBundle\Event\AuthenticateUserEvent;
use Knojector\SteamAuthenticationBundle\Event\FirstLoginEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class FirstLoginSubscriber implements EventSubscriberInterface
{
    public function __construct(private EventDispatcherInterface $eventDispatcher)
    {}

    /**
     * @inheritDoc
     */
    public static function getSubscribedEvents()
    {
        return [
            FirstLoginEvent::NAME => 'onFirstLogin'
        ];
    }

    public function onFirstLogin(FirstLoginEvent $event)
    {
        $communityId = $event->getCommunityId();
        
        $user = new User();
        $user->setUsername($communityId);
        
        // e.g. call the Steam API to fetch more profile information
        // e.g. create user entity and persist it
        
        // dispatch the authenticate event in order to sign in the new created user.
        $this->eventDispatcher->dispatch(new AuthenticateUserEvent($user), AuthenticateUserEvent::NAME);
    }
}

Step 2 - Place the login button

To place the "Sign in through Steam" button you can include the following snippet in your template

{% include '@KnojectorSteamAuthentication/button.html.twig' %}

Bugs and ideas?

Feel free to open an issue or submit a pull request 😉

Requirements

The bundle requires:

  • PHP 8.0.0+
  • Symfony 5.3/6

统计信息

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

GitHub 信息

  • Stars: 11
  • Watchers: 1
  • Forks: 8
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-03-14