mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	#1525 Triggere mailer for admin created accounts
This commit is contained in:
		@@ -788,6 +788,7 @@ users.activated = Activated
 | 
			
		||||
users.admin = Admin
 | 
			
		||||
users.repos = Repos
 | 
			
		||||
users.created = Created
 | 
			
		||||
users.send_register_notify = Send Registration Notification To User
 | 
			
		||||
users.new_success = New account '%s' has been created successfully.
 | 
			
		||||
users.edit = Edit
 | 
			
		||||
users.auth_source = Authentication Source
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ type AdminCrateUserForm struct {
 | 
			
		||||
	UserName   string `binding:"Required;AlphaDashDot;MaxSize(35)"`
 | 
			
		||||
	Email      string `binding:"Required;Email;MaxSize(254)"`
 | 
			
		||||
	Password   string `binding:"MaxSize(255)"`
 | 
			
		||||
	SendNotify bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *AdminCrateUserForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -19,8 +19,8 @@ import (
 | 
			
		||||
const (
 | 
			
		||||
	AUTH_ACTIVATE        base.TplName = "mail/auth/activate"
 | 
			
		||||
	AUTH_ACTIVATE_EMAIL  base.TplName = "mail/auth/activate_email"
 | 
			
		||||
	AUTH_REGISTER_NOTIFY base.TplName = "mail/auth/register_notify"
 | 
			
		||||
	AUTH_RESET_PASSWORD  base.TplName = "mail/auth/reset_passwd"
 | 
			
		||||
	AUTH_REGISTER_SUCCESS base.TplName = "mail/auth/register_success"
 | 
			
		||||
 | 
			
		||||
	NOTIFY_COLLABORATOR base.TplName = "mail/notify/collaborator"
 | 
			
		||||
	NOTIFY_MENTION      base.TplName = "mail/notify/mention"
 | 
			
		||||
@@ -64,6 +64,20 @@ func SendResetPasswordMail(c *macaron.Context, u *models.User) {
 | 
			
		||||
	SendUserMail(c, u, AUTH_RESET_PASSWORD, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SendRegisterNotifyMail triggers a notify e-mail by admin created a account.
 | 
			
		||||
func SendRegisterNotifyMail(c *macaron.Context, u *models.User) {
 | 
			
		||||
	body, err := c.HTMLString(string(AUTH_REGISTER_NOTIFY), ComposeTplData(u))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error(4, "HTMLString: %v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	msg := NewMessage([]string{u.Email}, c.Tr("mail.register_notify"), body)
 | 
			
		||||
	msg.Info = fmt.Sprintf("UID: %d, registration notify", u.Id)
 | 
			
		||||
 | 
			
		||||
	SendAsync(msg)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SendActivateAccountMail sends confirmation e-mail.
 | 
			
		||||
func SendActivateEmailMail(c *macaron.Context, u *models.User, email *models.EmailAddress) {
 | 
			
		||||
	data := ComposeTplData(u)
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ import (
 | 
			
		||||
	"github.com/gogits/gogs/modules/auth"
 | 
			
		||||
	"github.com/gogits/gogs/modules/base"
 | 
			
		||||
	"github.com/gogits/gogs/modules/log"
 | 
			
		||||
	"github.com/gogits/gogs/modules/mailer"
 | 
			
		||||
	"github.com/gogits/gogs/modules/middleware"
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
@@ -60,6 +61,8 @@ func NewUser(ctx *middleware.Context) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Data["Sources"] = sources
 | 
			
		||||
 | 
			
		||||
	ctx.Data["CanSendEmail"] = setting.MailService != nil
 | 
			
		||||
	ctx.HTML(200, USER_NEW)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +78,8 @@ func NewUserPost(ctx *middleware.Context, form auth.AdminCrateUserForm) {
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Data["Sources"] = sources
 | 
			
		||||
 | 
			
		||||
	ctx.Data["CanSendEmail"] = setting.MailService != nil
 | 
			
		||||
 | 
			
		||||
	if ctx.HasError() {
 | 
			
		||||
		ctx.HTML(200, USER_NEW)
 | 
			
		||||
		return
 | 
			
		||||
@@ -118,6 +123,11 @@ func NewUserPost(ctx *middleware.Context, form auth.AdminCrateUserForm) {
 | 
			
		||||
	}
 | 
			
		||||
	log.Trace("Account created by admin(%s): %s", ctx.User.Name, u.Name)
 | 
			
		||||
 | 
			
		||||
	// Send e-mail notification.
 | 
			
		||||
	if form.SendNotify && setting.MailService != nil {
 | 
			
		||||
		mailer.SendRegisterNotifyMail(ctx.Context, u)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx.Flash.Success(ctx.Tr("admin.users.new_success", u.Name))
 | 
			
		||||
	ctx.Redirect(setting.AppSubUrl + "/admin/users/" + com.ToStr(u.Id))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,6 @@
 | 
			
		||||
        </div>
 | 
			
		||||
        {{end}}
 | 
			
		||||
        {{end}}
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,6 @@
 | 
			
		||||
						  <tr>
 | 
			
		||||
						    <th>ID</th>
 | 
			
		||||
						    <th>{{.i18n.Tr "admin.orgs.name"}}</th>
 | 
			
		||||
			    <th>{{.i18n.Tr "email"}}</th>
 | 
			
		||||
						    <th>{{.i18n.Tr "admin.orgs.teams"}}</th>
 | 
			
		||||
						    <th>{{.i18n.Tr "admin.orgs.members"}}</th>
 | 
			
		||||
						    <th>{{.i18n.Tr "admin.users.repos"}}</th>
 | 
			
		||||
@@ -26,7 +25,6 @@
 | 
			
		||||
						  <tr>
 | 
			
		||||
						    <td>{{.Id}}</td>
 | 
			
		||||
						    <td><a href="{{AppSubUrl}}/org/{{.Name}}">{{.Name}}</a></td>
 | 
			
		||||
			    <td>{{.Email}}</td>
 | 
			
		||||
						    <td>{{.NumTeams}}</td>
 | 
			
		||||
						    <td>{{.NumMembers}}</td>
 | 
			
		||||
						    <td>{{.NumRepos}}</td>
 | 
			
		||||
@@ -60,7 +58,6 @@
 | 
			
		||||
		    </div>
 | 
			
		||||
		    {{end}}
 | 
			
		||||
				{{end}}
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,6 @@
 | 
			
		||||
				</div>
 | 
			
		||||
				{{end}}
 | 
			
		||||
				{{end}}
 | 
			
		||||
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,16 @@
 | 
			
		||||
              <input id="password" name="password" type="password" value="{{.password}}" {{if eq .login_type "0-0"}}required{{end}}>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <!-- Send register notify e-mail -->
 | 
			
		||||
            {{if .CanSendEmail}}
 | 
			
		||||
            <div class="inline field">
 | 
			
		||||
              <div class="ui checkbox">
 | 
			
		||||
                <label><strong>{{.i18n.Tr "admin.users.send_register_notify"}}</strong></label>
 | 
			
		||||
                <input name="send_notify" type="checkbox" {{if .send_notify}}checked{{end}}>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            {{end}}
 | 
			
		||||
 | 
			
		||||
            <div class="field">
 | 
			
		||||
              <button class="ui green button">{{.i18n.Tr "admin.users.new_account"}}</button>
 | 
			
		||||
            </div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								templates/mail/auth/register_notify.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								templates/mail/auth/register_notify.tmpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>  
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 | 
			
		||||
  <title>{{.User.Name}}, welcome to {{.AppName}}</title>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <p>Hi <b>{{.User.Name}}</b>, this is your registration confirmation email for {{.AppName}}!</p>
 | 
			
		||||
  <p>You can now login via username: {{.User.Name}}.</p>
 | 
			
		||||
  <p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,22 +0,0 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>  
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 | 
			
		||||
  <title>{{.User.Name}}, welcome to {{.AppName}}</title>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body class="mail register success">
 | 
			
		||||
  <div class="ui segment">
 | 
			
		||||
    <div class="ui header">
 | 
			
		||||
      <img class="ui image" src="{{.AppUrl}}/img/favicon.png">
 | 
			
		||||
      {{.AppName}}
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="ui divider"></div>
 | 
			
		||||
    <p>Hi <b>{{.User.Name}}</b>, this is your registration email for {{.AppName}}!</p>
 | 
			
		||||
    <p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p>
 | 
			
		||||
    <p><a href="{{.AppUrl}}user/activate?code={{.Code}}">{{.AppUrl}}user/activate?code={{.Code}}</a></p>
 | 
			
		||||
    <p>Not working? Try copying and pasting it to your browser.</p>
 | 
			
		||||
  </div>
 | 
			
		||||
  <p class="copyright text grey">© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user