MCPcopy Create free account
hub / github.com/PaperDebugger/paperdebugger / parseUserActor

Function parseUserActor

internal/api/actor.go:14–39  ·  view source on GitHub ↗
(ctx context.Context, token string, userService *services.UserService)

Source from the content-addressed store, hash-verified

12)
13
14func parseUserActor(ctx context.Context, token string, userService *services.UserService) (*accesscontrol.Actor, error) {
15 if len(token) == 0 {
16 return nil, shared.ErrInvalidToken("Authentication token is required")
17 }
18
19 claims, err := jwt.VerifyJwtToken(token)
20 if err != nil {
21 return nil, shared.ErrInvalidToken(err.Error())
22 }
23
24 if len(claims.Audience) == 0 || claims.Audience[0] != "paperdebugger/user" {
25 return nil, shared.ErrInvalidActor("Invalid token audience")
26 }
27
28 actorID, err := bson.ObjectIDFromHex(claims.Subject)
29 if err != nil {
30 return nil, shared.ErrInvalidActor("Invalid actor ID format")
31 }
32
33 _, err = userService.GetUserByID(ctx, actorID)
34 if err != nil {
35 return nil, shared.ErrInvalidUser(err.Error())
36 }
37
38 return &accesscontrol.Actor{ID: actorID}, nil
39}

Callers 1

authUserActorMethod · 0.85

Calls 2

VerifyJwtTokenFunction · 0.92
GetUserByIDMethod · 0.80

Tested by

no test coverage detected