MCPcopy
hub / github.com/pocketbase/pocketbase / FetchAuthUser

Method FetchAuthUser

tools/auth/github.go:46–89  ·  view source on GitHub ↗

FetchAuthUser returns an AuthUser instance based the Github's user api. API reference: https://docs.github.com/en/rest/users/users?apiVersion=2026-03-10#get-the-authenticated-user

(token *oauth2.Token)

Source from the content-addressed store, hash-verified

44//
45// API reference: https://docs.github.com/en/rest/users/users?apiVersion=2026-03-10#get-the-authenticated-user
46func (p *Github) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
47 data, err := p.FetchRawUserInfo(token)
48 if err != nil {
49 return nil, err
50 }
51
52 rawUser := map[string]any{}
53 if err := json.Unmarshal(data, &rawUser); err != nil {
54 return nil, err
55 }
56
57 extracted := struct {
58 Name string `json:"name"`
59 Login string `json:"login"`
60 AvatarURL string `json:"avatar_url"`
61 Id int64 `json:"id"`
62 }{}
63 if err := json.Unmarshal(data, &extracted); err != nil {
64 return nil, err
65 }
66
67 user := &AuthUser{
68 Id: strconv.FormatInt(extracted.Id, 10),
69 Name: extracted.Name,
70 Username: extracted.Login,
71 AvatarURL: extracted.AvatarURL,
72 RawUser: rawUser,
73 AccessToken: token.AccessToken,
74 RefreshToken: token.RefreshToken,
75 }
76
77 user.Expiry, _ = types.ParseDateTime(token.Expiry)
78
79 // always send a primary email request even though the email is
80 // returned in the userinfo endpoint since the API may change and
81 // enterprise setups may have configuration that could allow unverified emails
82 email, err := p.fetchVerifiedPrimaryEmail(token)
83 if err != nil {
84 return nil, err
85 }
86 user.Email = email
87
88 return user, nil
89}
90
91// fetchVerifiedPrimaryEmail sends an API request to retrieve the verified
92// primary email, in case "Keep my email address private" was set.

Callers

nothing calls this directly

Calls 3

ParseDateTimeFunction · 0.92
FetchRawUserInfoMethod · 0.65

Tested by

no test coverage detected