MCPcopy Create free account
hub / github.com/daodst/chat / GetOpenIDUserInfo

Function GetOpenIDUserInfo

federationapi/routing/openid.go:31–65  ·  view source on GitHub ↗

GetOpenIDUserInfo implements GET /_matrix/federation/v1/openid/userinfo

(
	httpReq *http.Request,
	userAPI userapi.FederationUserAPI,
)

Source from the content-addressed store, hash-verified

29
30// GetOpenIDUserInfo implements GET /_matrix/federation/v1/openid/userinfo
31func GetOpenIDUserInfo(
32 httpReq *http.Request,
33 userAPI userapi.FederationUserAPI,
34) util.JSONResponse {
35 token := httpReq.URL.Query().Get("access_token")
36 if len(token) == 0 {
37 return util.JSONResponse{
38 Code: http.StatusUnauthorized,
39 JSON: jsonerror.MissingArgument("access_token is missing"),
40 }
41 }
42
43 req := userapi.QueryOpenIDTokenRequest{
44 Token: token,
45 }
46
47 var openIDTokenAttrResponse userapi.QueryOpenIDTokenResponse
48 err := userAPI.QueryOpenIDToken(httpReq.Context(), &req, &openIDTokenAttrResponse)
49 if err != nil {
50 util.GetLogger(httpReq.Context()).WithError(err).Error("userAPI.QueryOpenIDToken failed")
51 }
52
53 var res interface{} = openIDUserInfoResponse{Sub: openIDTokenAttrResponse.Sub}
54 code := http.StatusOK
55 nowMS := time.Now().UnixNano() / int64(time.Millisecond)
56 if openIDTokenAttrResponse.Sub == "" || nowMS > openIDTokenAttrResponse.ExpiresAtMS {
57 code = http.StatusUnauthorized
58 res = jsonerror.UnknownToken("Access Token unknown or expired")
59 }
60
61 return util.JSONResponse{
62 Code: code,
63 JSON: res,
64 }
65}

Callers 1

SetupFunction · 0.85

Calls 4

ContextMethod · 0.80
GetMethod · 0.65
QueryOpenIDTokenMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected