diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index bcdbcbe07939..399d07fe47b9 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -27,7 +27,6 @@ import ( "code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/routers/utils" "code.gitea.io/gitea/services/forms" - "code.gitea.io/gitea/services/mailer" org_service "code.gitea.io/gitea/services/org" ) @@ -132,8 +131,7 @@ func TeamsAction(ctx *context.Context) { if err != nil { if user_model.IsErrUserNotExist(err) { if setting.MailService != nil && user_model.ValidateEmail(uname) == nil { - invite, err := org_model.CreateTeamInvite(ctx, ctx.Doer, ctx.Org.Team, uname) - if err != nil { + if err := org_service.CreateTeamInvite(ctx, ctx.Doer, ctx.Org.Team, uname); err != nil { if org_model.IsErrTeamInviteAlreadyExist(err) { ctx.Flash.Error(ctx.Tr("form.duplicate_invite_to_team")) } else if org_model.IsErrUserEmailAlreadyAdded(err) { @@ -142,9 +140,6 @@ func TeamsAction(ctx *context.Context) { ctx.ServerError("CreateTeamInvite", err) return } - } else if err := mailer.MailTeamInvite(ctx, ctx.Doer, ctx.Org.Team, invite); err != nil { - ctx.ServerError("MailTeamInvite", err) - return } } else { ctx.Flash.Error(ctx.Tr("form.user_not_exist")) diff --git a/services/org/team_invite.go b/services/org/team_invite.go new file mode 100644 index 000000000000..1108a46da5b4 --- /dev/null +++ b/services/org/team_invite.go @@ -0,0 +1,23 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package org + +import ( + "context" + + org_model "code.gitea.io/gitea/models/organization" + user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/services/mailer" +) + +// CreateTeamInvite make a persistent invite in db and mail it +func CreateTeamInvite(ctx context.Context, inviter *user_model.User, team *org_model.Team, uname string) error { + invite, err := org_model.CreateTeamInvite(ctx, inviter, team, uname) + if err != nil { + return err + } + + return mailer.MailTeamInvite(ctx, inviter, team, invite) +}