package pull import ( "context" "tangled.org/core/appview/models" "tangled.org/core/appview/pages/repoinfo" "tangled.org/core/appview/session" ) func (s *Service) MergePull(ctx context.Context, pull *models.Pull2) error { l := s.logger.With("method", "MergePull") sess := session.FromContext(ctx) if sess == nil { l.Error("user session is missing in context") return ErrForbidden } sessDid := sess.Data.AccountDID l = l.With("did", sessDid) // TODO: make this more granular roles := repoinfo.RolesInRepo{Roles: s.enforcer.GetPermissionsInRepo(sessDid.String(), pull.Repo.Knot, pull.Repo.DidSlashRepo())} isRepoOwner := roles.IsOwner() isCollaborator := roles.IsCollaborator() isAuthor := sessDid == pull.Did if !(isRepoOwner || isCollaborator || isAuthor) { l.Error("user is not authorized") return ErrForbidden } // 1. request knot to apply series of patches // 2. create new pull.state record // 3. update db panic("unimplemented") pull.State = models.PullMerged // s.notifier.NewPullState(ctx, sessDid, pull) return nil }