(ctx context.Context, req types.UnlockLFSReq)
| 542 | } |
| 543 | |
| 544 | func (c *GitHTTPComponent) UnLock(ctx context.Context, req types.UnlockLFSReq) (*database.LfsLock, error) { |
| 545 | var ( |
| 546 | lock *database.LfsLock |
| 547 | err error |
| 548 | ) |
| 549 | _, err = c.repo.FindByPath(ctx, req.RepoType, req.Namespace, req.Name) |
| 550 | if err != nil { |
| 551 | return nil, fmt.Errorf("failed to find repo, error: %w", err) |
| 552 | } |
| 553 | |
| 554 | user, err := c.user.FindByUsername(ctx, req.CurrentUser) |
| 555 | if err != nil { |
| 556 | return nil, ErrUnauthorized |
| 557 | } |
| 558 | |
| 559 | allowed, err := c.AllowWriteAccess(ctx, req.RepoType, req.Namespace, req.Name, req.CurrentUser) |
| 560 | if err != nil { |
| 561 | slog.Error("Unable to check user write access:", slog.Any("error", err)) |
| 562 | return nil, err |
| 563 | } |
| 564 | |
| 565 | if !allowed { |
| 566 | return nil, ErrUnauthorized |
| 567 | } |
| 568 | |
| 569 | lock, err = c.lfsLockStore.FindByID(ctx, req.ID) |
| 570 | if err != nil { |
| 571 | if errors.Is(err, sql.ErrNoRows) { |
| 572 | return nil, ErrNotFound |
| 573 | } |
| 574 | return nil, err |
| 575 | } |
| 576 | |
| 577 | if !req.Force && lock.UserID != user.ID { |
| 578 | return nil, ErrPermissionDenied |
| 579 | } |
| 580 | err = c.lfsLockStore.RemoveByID(ctx, req.ID) |
| 581 | if err != nil { |
| 582 | return nil, err |
| 583 | } |
| 584 | |
| 585 | return lock, nil |
| 586 | } |
| 587 | |
| 588 | func (c *GitHTTPComponent) VerifyLock(ctx context.Context, req types.VerifyLFSLockReq) (*types.LFSLockListVerify, error) { |
| 589 | var ( |
nothing calls this directly
no test coverage detected