code.gitea.io/gitea@v1.19.3/modules/repository/collaborator.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repository 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models/db" 10 "code.gitea.io/gitea/models/perm" 11 access_model "code.gitea.io/gitea/models/perm/access" 12 repo_model "code.gitea.io/gitea/models/repo" 13 user_model "code.gitea.io/gitea/models/user" 14 ) 15 16 func AddCollaborator(ctx context.Context, repo *repo_model.Repository, u *user_model.User) error { 17 return db.WithTx(ctx, func(ctx context.Context) error { 18 collaboration := &repo_model.Collaboration{ 19 RepoID: repo.ID, 20 UserID: u.ID, 21 } 22 23 has, err := db.GetByBean(ctx, collaboration) 24 if err != nil { 25 return err 26 } else if has { 27 return nil 28 } 29 collaboration.Mode = perm.AccessModeWrite 30 31 if err = db.Insert(ctx, collaboration); err != nil { 32 return err 33 } 34 35 return access_model.RecalculateUserAccess(ctx, repo, u.ID) 36 }) 37 }