MCPcopy Create free account
hub / github.com/rilldata/rill / validateAuthTokenUncached

Method validateAuthTokenUncached

admin/auth_token.go:314–397  ·  view source on GitHub ↗
(ctx context.Context, token string)

Source from the content-addressed store, hash-verified

312}
313
314func (s *Service) validateAuthTokenUncached(ctx context.Context, token string) (AuthToken, error) {
315 parsed, err := authtoken.FromString(token)
316 if err != nil {
317 return nil, err
318 }
319
320 switch parsed.Type {
321 case authtoken.TypeUser:
322 uat, err := s.DB.FindUserAuthToken(ctx, parsed.ID.String())
323 if err != nil {
324 return nil, err
325 }
326
327 if uat.ExpiresOn != nil && uat.ExpiresOn.Before(time.Now()) {
328 return nil, fmt.Errorf("auth token is expired")
329 }
330
331 if !bytes.Equal(uat.SecretHash, parsed.SecretHash()) {
332 return nil, fmt.Errorf("invalid auth token")
333 }
334
335 s.Used.UserToken(uat.ID)
336 s.Used.User(uat.UserID)
337 if uat.AuthClientID != nil {
338 s.Used.Client(*uat.AuthClientID)
339 }
340
341 return &userAuthToken{model: uat, token: parsed}, nil
342 case authtoken.TypeService:
343 sat, err := s.DB.FindServiceAuthToken(ctx, parsed.ID.String())
344 if err != nil {
345 return nil, err
346 }
347
348 if sat.ExpiresOn != nil && sat.ExpiresOn.Before(time.Now()) {
349 return nil, fmt.Errorf("auth token is expired")
350 }
351
352 if !bytes.Equal(sat.SecretHash, parsed.SecretHash()) {
353 return nil, fmt.Errorf("invalid auth token")
354 }
355
356 s.Used.ServiceToken(sat.ID)
357 s.Used.Service(sat.ServiceID)
358
359 return &serviceAuthToken{model: sat, token: parsed}, nil
360 case authtoken.TypeDeployment:
361 dat, err := s.DB.FindDeploymentAuthToken(ctx, parsed.ID.String())
362 if err != nil {
363 return nil, err
364 }
365
366 if dat.ExpiresOn != nil && dat.ExpiresOn.Before(time.Now()) {
367 return nil, fmt.Errorf("auth token is expired")
368 }
369
370 if !bytes.Equal(dat.SecretHash, parsed.SecretHash()) {
371 return nil, fmt.Errorf("invalid auth token")

Callers 1

ValidateAuthTokenMethod · 0.95

Calls 15

FromStringFunction · 0.92
SecretHashMethod · 0.80
UserTokenMethod · 0.80
UserMethod · 0.80
ServiceTokenMethod · 0.80
ServiceMethod · 0.80
DeploymentTokenMethod · 0.80
MagicAuthTokenMethod · 0.80
FindUserAuthTokenMethod · 0.65
StringMethod · 0.65
ErrorfMethod · 0.65
FindServiceAuthTokenMethod · 0.65

Tested by

no test coverage detected