ekreative / redmine_login
使用redmine作为用户提供者登录symfony
3.8.2
2019-02-04 14:25 UTC
Requires
- php: >=7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.2
- mcfedr/json-form: ^4.4
- symfony/form: ^3.0|^4.0
- symfony/framework-bundle: ^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^5.3
- symfony/monolog-bundle: ^3.0|^2.4
- symfony/phpunit-bridge: ^4.2
README
安装
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