vimar/flarum-whoami

将 Whoami 端点添加到 Flarum

v1.0.0 2023-11-07 13:18 UTC

This package is auto-updated.

Last update: 2024-09-07 15:12:53 UTC


README

MIT license

此扩展添加了一个新的端点 "/api/whoami",它公开当前登录用户的数据。通过使用此路由与 POST /api/token 路由,您可以将 Flarum 作为您站点的身份提供者。

安装

手动安装

composer require vimar/flarum-whoami

更新

composer update vimar/flarum-whoami
php flarum migrate
php flarum cache:clear

Flarum 认证教程

登录

为了模拟 Flarum 的登录语句,我们只需调用 Flarum POST /api/token 以创建注册用户的令牌

POST /api/token HTTP/1.1

{
    "identification": "John",
    "password": "pass7word",
    "remember": 1
}

HTTP/1.1 200 OK

{
    "token": "YACub2KLfe8mfmHPcUKtt6t2SMJOGPXnZbqhc3nX",
    "userId": "1"
}

然后我们将此令牌存储为 cookie(例如:flarum_token)供将来使用(默认情况下,访问令牌有效期为 1 小时,除非您添加 remember 参数,在这种情况下,它有效期为 5 年。)。

注意:要启用我们网站和 Flarum 之间的单点登录(SSO),我们还需要将 session_remember 令牌作为 flarum_remember cookie 存储;

验证登录用户资料

现在,每次我们想知道一个用户是否已登录时,我们只需要调用以下端点

POST /api/whoami HTTP/1.1
Authorization: Token YACub2KLfe8mfmHPcUKtt6t2SMJOGPXnZbqhc3nX

HTTP/1.1 200 OK

{
    "data": {
        "type": "users",
        "id": "4",
        "attributes": {
            "username": "John",
            "displayName": "Jon Doe",
            "slug": "John-Doe",
            "joinTime": "2003-04-02T20:29:29+00:00",
            "discussionCount": 125,
            "commentCount": 2799,
            "canEdit": true,
            "canEditCredentials": true,
            "canEditGroups": true,
            "canDelete": true,
            "lastSeenAt": "2023-11-07T09:43:13+00:00",
            "isEmailConfirmed": true,
            "email": "john@doe.com",
            "markedAllAsReadAt": null,
            "unreadNotificationCount": 0,
            "newNotificationCount": 0,
            "preferences": {
                ...
            },
            "isAdmin": true,
            ...
        },
        "relationships": {
            "groups": {
                "data": [
                    {
                        "type": "groups",
                        "id": "1"
                    }
                ]
            }
        }
    },
    "included": [
        {
            "type": "groups",
            "id": "1",
            "attributes": {
                "nameSingular": "Admin",
                "namePlural": "Admins",
                "color": "#B72A2A",
                "icon": "fas fa-wrench",
                "isHidden": 0
            }
        }
    ]
}

登出

要登出,我们需要删除包含访问令牌的会话 cookie,并最终通过调用