From 989fec72bfec5268bb9f667c27c4bae5cd86a2db Mon Sep 17 00:00:00 2001 From: Gucheng Wang Date: Fri, 24 Mar 2023 01:02:04 +0800 Subject: [PATCH] Add /api/user API for Flarum's FoF Passport plugin --- authz/authz.go | 1 + controllers/account.go | 37 +++++++++++++++++++++++++++++++++++++ routers/router.go | 1 + 3 files changed, 39 insertions(+) diff --git a/authz/authz.go b/authz/authz.go index 8ff96c04..7c9db0fe 100644 --- a/authz/authz.go +++ b/authz/authz.go @@ -87,6 +87,7 @@ p, *, *, POST, /api/logout, *, * p, *, *, GET, /api/logout, *, * p, *, *, GET, /api/get-account, *, * p, *, *, GET, /api/userinfo, *, * +p, *, *, GET, /api/user, *, * p, *, *, POST, /api/webhook, *, * p, *, *, GET, /api/get-webhook-event, *, * p, *, *, *, /api/login/oauth, *, * diff --git a/controllers/account.go b/controllers/account.go index 2557277b..00e5cf63 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -370,6 +370,43 @@ func (c *ApiController) GetUserinfo() { c.ServeJSON() } +// GetUserinfo2 +// LaravelResponse +// @Title UserInfo2 +// @Tag Account API +// @Description return Laravel compatible user information according to OAuth 2.0 +// @Success 200 {object} LaravelResponse The Response object +// @router /user [get] +func (c *ApiController) GetUserinfo2() { + user, ok := c.RequireSignedInUser() + if !ok { + return + } + + // this API is used by "Api URL" of Flarum's FoF Passport plugin + // https://github.com/FriendsOfFlarum/passport + type LaravelResponse struct { + Id string `json:"id"` + Name string `json:"name"` + Email string `json:"email"` + EmailVerifiedAt string `json:"email_verified_at"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` + } + + response := LaravelResponse{ + Id: user.Id, + Name: user.Name, + Email: user.Email, + EmailVerifiedAt: user.CreatedTime, + CreatedAt: user.CreatedTime, + UpdatedAt: user.UpdatedTime, + } + + c.Data["json"] = response + c.ServeJSON() +} + // GetCaptcha ... // @Tag Login API // @Title GetCaptcha diff --git a/routers/router.go b/routers/router.go index 1a94cde3..ae5bcee8 100644 --- a/routers/router.go +++ b/routers/router.go @@ -50,6 +50,7 @@ func initAPI() { beego.Router("/api/logout", &controllers.ApiController{}, "GET,POST:Logout") beego.Router("/api/get-account", &controllers.ApiController{}, "GET:GetAccount") beego.Router("/api/userinfo", &controllers.ApiController{}, "GET:GetUserinfo") + beego.Router("/api/user", &controllers.ApiController{}, "GET:GetUserinfo2") beego.Router("/api/unlink", &controllers.ApiController{}, "POST:Unlink") beego.Router("/api/get-saml-login", &controllers.ApiController{}, "GET:GetSamlLogin") beego.Router("/api/acs", &controllers.ApiController{}, "POST:HandleSamlLogin")