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

Method FetchAuthUser

tools/auth/gitee.go:46–93  ·  view source on GitHub ↗

FetchAuthUser returns an AuthUser instance based the Gitee's user api. API reference: https://gitee.com/api/v5/swagger#/getV5User

(token *oauth2.Token)

Source from the content-addressed store, hash-verified

44//
45// API reference: https://gitee.com/api/v5/swagger#/getV5User
46func (p *Gitee) 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 Login string `json:"login"`
59 Name string `json:"name"`
60 Email string `json:"email"`
61 AvatarURL string `json:"avatar_url"`
62 Id int64 `json:"id"`
63 }{}
64 if err := json.Unmarshal(data, &extracted); err != nil {
65 return nil, err
66 }
67
68 user := &AuthUser{
69 Id: strconv.FormatInt(extracted.Id, 10),
70 Name: extracted.Name,
71 Username: extracted.Login,
72 AvatarURL: extracted.AvatarURL,
73 RawUser: rawUser,
74 AccessToken: token.AccessToken,
75 RefreshToken: token.RefreshToken,
76 }
77
78 user.Expiry, _ = types.ParseDateTime(token.Expiry)
79
80 if extracted.Email != "" && is.EmailFormat.Validate(extracted.Email) == nil {
81 // valid public primary email
82 user.Email = extracted.Email
83 } else {
84 // send an additional optional request to retrieve the email
85 email, err := p.fetchPrimaryEmail(token)
86 if err != nil {
87 return nil, err
88 }
89 user.Email = email
90 }
91
92 return user, nil
93}
94
95// fetchPrimaryEmail sends an API request to retrieve the verified primary email,
96// in case the user hasn't set "Public email address" or has unchecked

Callers

nothing calls this directly

Calls 4

fetchPrimaryEmailMethod · 0.95
ParseDateTimeFunction · 0.92
FetchRawUserInfoMethod · 0.65
ValidateMethod · 0.65

Tested by

no test coverage detected