(ctx context.Context, token string)
| 312 | } |
| 313 | |
| 314 | func (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") |
no test coverage detected