ekreative/redmine_login

使用redmine作为用户提供者登录symfony

安装: 604

依赖者: 0

建议者: 0

安全性: 0

星标: 3

关注者: 4

分支: 6

开放性问题: 1

类型:symfony-bundle

3.8.2 2019-02-04 14:25 UTC

This package is auto-updated.

Last update: 2024-09-05 02:43:42 UTC


README

Latest Stable Version License Build Status SensioLabsInsight Coverage Status

安装

composer require ekreative/redmine_login

内核

new Ekreative\RedmineLoginBundle\EkreativeRedmineLoginBundle()

参数

parameters:
    redmine: 'https://redmine.ruby-lang.org.cn'

配置

ekreative_redmine_login:
    redmine: %redmine%

路由

ekreative_redmine_login:
    resource: "@EkreativeRedmineLoginBundle/Resources/config/routing.yml"

安全性

security:

    providers:
        webservice:
            id: ekreative_redmine_login.provider

    firewalls:
        unsec:
            pattern: ^/login$
            security: false

        secured_area:
            pattern: ^/
            anonymous:
            simple_form:
                authenticator: ekreative_redmine_login.authenticator
                check_path:    login_check
                login_path:    login
                username_parameter: login[username]
                password_parameter: login[password]
            simple_preauth:
                authenticator: ekreative_redmine_login.api_authenticator
            logout:
                path: /logout

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_REDMINE }

安全性

您可以使用两个角色来保护自己的路由

  • ROLE_REDMINE
  • ROLE_REDMINE_ADMIN

发起请求

$projects = json_decode($this->get('ekreative_redmine_login.client_provider')->get($this->getUser())->get('projects.json')->getBody(), true)['projects']

以api用户登录

POST /login HTTP/1.1
Content-Type: application/json

{
    "login": {
        "username": "username",
        "password": "password"
    }
}

响应

200 OK

{
  "user": {
    "id": 1,
    "username": "username",
    "firstName": "Name",
    "lastName": "Last",
    "email": "user@domin.com",
    "createdAt": "2000-01-01T00:00:00+00:00",
    "lastLoginAt": "2000-01-01T00:00:00+00:00",
    "apiKey": "your_api_key",
    "status": 1
  }
}

登录成功

GET /admin HTTP/1.1
Host: 127.0.0.1:8000
X-API-Key: your_api_key

自定义用户类

如果您想使用自定义用户类,这非常简单!有两种方法

  • 或者覆盖参数 ekreative_redmine_login.user.class,使用您自己的类名,该类扩展了 RedmineUser

  • 或者覆盖服务 ekreative_redmine_login.user_factory,使用实现了 RedmineUserFactoryInterface 的服务。如果您使用Doctrine,则需要这样做。

RedmineUser 包含了所有与Doctrine一起使用的注解,因此将其存储在数据库中非常简单。

API文档

如果您想列出API文档,请使用 NelmioApiDocBundle

内核

new Nelmio\ApiDocBundle\NelmioApiDocBundle()

路由

NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix:   /api/doc

安全性

替换标准 unsec

unsec:
    pattern: ^/(login$|api/doc)
    security: false