forked from forgejo/forgejo
Repository transfer has to be confirmed, if user can not create repo for new owner (#14792)
* make repo as "pending transfer" if on transfer start doer has no right to create repo in new destination * if new pending transfer ocured, create UI & Mail notifications
This commit is contained in:
parent
e0900310c4
commit
a4148c0f12
32 changed files with 898 additions and 167 deletions
|
@ -57,4 +57,6 @@ type Notifier interface {
|
|||
NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)
|
||||
NotifySyncCreateRef(doer *models.User, repo *models.Repository, refType, refFullName string)
|
||||
NotifySyncDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string)
|
||||
|
||||
NotifyRepoPendingTransfer(doer, newOwner *models.User, repo *models.Repository)
|
||||
}
|
||||
|
|
|
@ -166,3 +166,7 @@ func (*NullNotifier) NotifySyncCreateRef(doer *models.User, repo *models.Reposit
|
|||
// NotifySyncDeleteRef places a place holder function
|
||||
func (*NullNotifier) NotifySyncDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string) {
|
||||
}
|
||||
|
||||
// NotifyRepoPendingTransfer places a place holder function
|
||||
func (*NullNotifier) NotifyRepoPendingTransfer(doer, newOwner *models.User, repo *models.Repository) {
|
||||
}
|
||||
|
|
|
@ -170,3 +170,9 @@ func (m *mailNotifier) NotifyNewRelease(rel *models.Release) {
|
|||
|
||||
mailer.MailNewRelease(rel)
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyRepoPendingTransfer(doer, newOwner *models.User, repo *models.Repository) {
|
||||
if err := mailer.SendRepoTransferNotifyMail(doer, newOwner, repo); err != nil {
|
||||
log.Error("NotifyRepoPendingTransfer: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -290,3 +290,10 @@ func NotifySyncDeleteRef(pusher *models.User, repo *models.Repository, refType,
|
|||
notifier.NotifySyncDeleteRef(pusher, repo, refType, refFullName)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyRepoPendingTransfer notifies creation of pending transfer to notifiers
|
||||
func NotifyRepoPendingTransfer(doer, newOwner *models.User, repo *models.Repository) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyRepoPendingTransfer(doer, newOwner, repo)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -201,3 +201,9 @@ func (ns *notificationService) NotifyPullReviewRequest(doer *models.User, issue
|
|||
_ = ns.issueQueue.Push(opts)
|
||||
}
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyRepoPendingTransfer(doer, newOwner *models.User, repo *models.Repository) {
|
||||
if err := models.CreateRepoTransferNotification(doer, newOwner, repo); err != nil {
|
||||
log.Error("NotifyRepoPendingTransfer: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue