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

Method FetchAuthUser

tools/auth/gitlab.go:45–86  ·  view source on GitHub ↗

FetchAuthUser returns an AuthUser instance based the Gitlab's user api. API reference: https://docs.gitlab.com/api/users/#retrieve-the-current-user

(token *oauth2.Token)

Source from the content-addressed store, hash-verified

43//
44// API reference: https://docs.gitlab.com/api/users/#retrieve-the-current-user
45func (p *Gitlab) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
46 data, err := p.FetchRawUserInfo(token)
47 if err != nil {
48 return nil, err
49 }
50
51 rawUser := map[string]any{}
52 if err := json.Unmarshal(data, &rawUser); err != nil {
53 return nil, err
54 }
55
56 extracted := struct {
57 Name string `json:"name"`
58 Username string `json:"username"`
59 Email string `json:"email"`
60 AvatarURL string `json:"avatar_url"`
61 ConfirmedAt string `json:"confirmed_at"`
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.Username,
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 confirmedAt, err := time.Parse(time.RFC3339, extracted.ConfirmedAt)
81 if err == nil && !confirmedAt.IsZero() {
82 user.Email = extracted.Email
83 }
84
85 return user, nil
86}

Callers

nothing calls this directly

Calls 4

ParseDateTimeFunction · 0.92
ParseMethod · 0.80
IsZeroMethod · 0.80
FetchRawUserInfoMethod · 0.65

Tested by

no test coverage detected