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

Method FetchAuthUser

tools/auth/vk.go:52–98  ·  view source on GitHub ↗

FetchAuthUser returns an AuthUser instance based on VK's user api. API reference: https://dev.vk.com/method/users.get

(token *oauth2.Token)

Source from the content-addressed store, hash-verified

50//
51// API reference: https://dev.vk.com/method/users.get
52func (p *VK) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) {
53 data, err := p.FetchRawUserInfo(token)
54 if err != nil {
55 return nil, err
56 }
57
58 rawUser := map[string]any{}
59 if err := json.Unmarshal(data, &rawUser); err != nil {
60 return nil, err
61 }
62
63 extracted := struct {
64 Response []struct {
65 Id int64 `json:"id"`
66 FirstName string `json:"first_name"`
67 LastName string `json:"last_name"`
68 Username string `json:"screen_name"`
69 AvatarURL string `json:"photo_max"`
70 } `json:"response"`
71 }{}
72
73 if err := json.Unmarshal(data, &extracted); err != nil {
74 return nil, err
75 }
76
77 if len(extracted.Response) == 0 {
78 return nil, errors.New("missing response entry")
79 }
80
81 user := &AuthUser{
82 Id: strconv.FormatInt(extracted.Response[0].Id, 10),
83 Name: strings.TrimSpace(extracted.Response[0].FirstName + " " + extracted.Response[0].LastName),
84 Username: extracted.Response[0].Username,
85 AvatarURL: extracted.Response[0].AvatarURL,
86 RawUser: rawUser,
87 AccessToken: token.AccessToken,
88 RefreshToken: token.RefreshToken,
89 }
90
91 user.Expiry, _ = types.ParseDateTime(token.Expiry)
92
93 if email := token.Extra("email"); email != nil {
94 user.Email = fmt.Sprint(email)
95 }
96
97 return user, nil
98}

Callers

nothing calls this directly

Calls 3

ParseDateTimeFunction · 0.92
FetchRawUserInfoMethod · 0.65
ExtraMethod · 0.65

Tested by

no test coverage detected