From 06c1de7c1dd6e74f7ad8bbd18095466caf47e1e6 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 23 Sep 2020 16:03:14 +0800 Subject: [PATCH] fix: apigateway userinfo includes project metadata --- pkg/apigateway/handler/auth.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/apigateway/handler/auth.go b/pkg/apigateway/handler/auth.go index 325e223da5..baca9b4852 100644 --- a/pkg/apigateway/handler/auth.go +++ b/pkg/apigateway/handler/auth.go @@ -258,6 +258,15 @@ func fetchUserInfoFromToken(ctx context.Context, req *http.Request, token mcclie return info, nil } +func FetchProjectMetadata(ctx context.Context, req *http.Request, pid string) (jsonutils.JSONObject, error) { + s := auth.GetAdminSession(ctx, FetchRegion(req), "") + meta, err := modules.Projects.GetSpecific(s, pid, "metadata", nil) + if err != nil { + return nil, errors.Wrap(err, "GetProjectMetadata") + } + return meta, nil +} + func isUserEnableTotp(userInfo jsonutils.JSONObject) bool { return jsonutils.QueryBoolean(userInfo, "enable_mfa", false) } @@ -779,6 +788,14 @@ func getUserInfo(ctx context.Context, req *http.Request) (*jsonutils.JSONDict, e data.Add(jsonutils.NewString(token.GetProjectDomain()), "projectDomain") data.Add(jsonutils.NewString(token.GetProjectDomainId()), "projectDomainId") + pmeta, err := FetchProjectMetadata(ctx, req, token.GetProjectId()) + if err != nil { + return nil, errors.Wrap(err, "FetchProjectMetadata") + } + if pmeta != nil { + data.Add(pmeta, "project_meta") + } + log.Infof("getUserInfo modules.RoleAssignments.List") query := jsonutils.NewDict() query.Add(jsonutils.JSONNull, "effective")