mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 15:04:00 +01:00 
			
		
		
		
	Fix #857
This commit is contained in:
		
							parent
							
								
									acf094fb07
								
							
						
					
					
						commit
						7140dbac95
					
				@ -398,7 +398,7 @@ func runWeb(ctx *cli.Context) {
 | 
				
			|||||||
		m.Group("/settings", func() {
 | 
							m.Group("/settings", func() {
 | 
				
			||||||
			m.Combo("").Get(repo.Settings).
 | 
								m.Combo("").Get(repo.Settings).
 | 
				
			||||||
				Post(bindIgnErr(auth.RepoSettingForm{}), repo.SettingsPost)
 | 
									Post(bindIgnErr(auth.RepoSettingForm{}), repo.SettingsPost)
 | 
				
			||||||
			m.Route("/collaboration", "GET,POST", repo.Collaboration)
 | 
								m.Combo("/collaboration").Get(repo.Collaboration).Post(repo.CollaborationPost)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			m.Group("/hooks", func() {
 | 
								m.Group("/hooks", func() {
 | 
				
			||||||
				m.Get("", repo.Webhooks)
 | 
									m.Get("", repo.Webhooks)
 | 
				
			||||||
 | 
				
			|||||||
@ -612,6 +612,7 @@ settings.add_collaborator = Add New Collaborator
 | 
				
			|||||||
settings.add_collaborator_success = New collaborator has been added.
 | 
					settings.add_collaborator_success = New collaborator has been added.
 | 
				
			||||||
settings.remove_collaborator_success = Collaborator has been removed.
 | 
					settings.remove_collaborator_success = Collaborator has been removed.
 | 
				
			||||||
settings.search_user_placeholder = Search user...
 | 
					settings.search_user_placeholder = Search user...
 | 
				
			||||||
 | 
					settings.org_not_allowed_to_be_collaborator = Organization is not allowed to be added as a collaborator.
 | 
				
			||||||
settings.user_is_org_member = User is organization member who cannot be added as a collaborator.
 | 
					settings.user_is_org_member = User is organization member who cannot be added as a collaborator.
 | 
				
			||||||
settings.add_webhook = Add Webhook
 | 
					settings.add_webhook = Add Webhook
 | 
				
			||||||
settings.hooks_desc = Webhooks are much like basic HTTP POST event triggers. Whenever something occurs in Gogs, we will handle the notification to the target host you specify. Learn more in this <a target="_blank" href="%s">Webhooks Guide</a>.
 | 
					settings.hooks_desc = Webhooks are much like basic HTTP POST event triggers. Whenever something occurs in Gogs, we will handle the notification to the target host you specify. Learn more in this <a target="_blank" href="%s">Webhooks Guide</a>.
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -233,48 +233,6 @@ func Collaboration(ctx *middleware.Context) {
 | 
				
			|||||||
	ctx.Data["Title"] = ctx.Tr("repo.settings")
 | 
						ctx.Data["Title"] = ctx.Tr("repo.settings")
 | 
				
			||||||
	ctx.Data["PageIsSettingsCollaboration"] = true
 | 
						ctx.Data["PageIsSettingsCollaboration"] = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ctx.Req.Method == "POST" {
 | 
					 | 
				
			||||||
		name := strings.ToLower(ctx.Query("collaborator"))
 | 
					 | 
				
			||||||
		if len(name) == 0 || ctx.Repo.Owner.LowerName == name {
 | 
					 | 
				
			||||||
			ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		u, err := models.GetUserByName(name)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			if models.IsErrUserNotExist(err) {
 | 
					 | 
				
			||||||
				ctx.Flash.Error(ctx.Tr("form.user_not_exist"))
 | 
					 | 
				
			||||||
				ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				ctx.Handle(500, "GetUserByName", err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Check if user is organization member.
 | 
					 | 
				
			||||||
		if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
 | 
					 | 
				
			||||||
			ctx.Flash.Info(ctx.Tr("repo.settings.user_is_org_member"))
 | 
					 | 
				
			||||||
			ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if err = ctx.Repo.Repository.AddCollaborator(u); err != nil {
 | 
					 | 
				
			||||||
			ctx.Handle(500, "AddCollaborator", err)
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if setting.Service.EnableNotifyMail {
 | 
					 | 
				
			||||||
			if err = mailer.SendCollaboratorMail(ctx.Render, u, ctx.User, ctx.Repo.Repository); err != nil {
 | 
					 | 
				
			||||||
				ctx.Handle(500, "SendCollaboratorMail", err)
 | 
					 | 
				
			||||||
				return
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		ctx.Flash.Success(ctx.Tr("repo.settings.add_collaborator_success"))
 | 
					 | 
				
			||||||
		ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Delete collaborator.
 | 
						// Delete collaborator.
 | 
				
			||||||
	remove := strings.ToLower(ctx.Query("remove"))
 | 
						remove := strings.ToLower(ctx.Query("remove"))
 | 
				
			||||||
	if len(remove) > 0 && remove != ctx.Repo.Owner.LowerName {
 | 
						if len(remove) > 0 && remove != ctx.Repo.Owner.LowerName {
 | 
				
			||||||
@ -302,6 +260,54 @@ func Collaboration(ctx *middleware.Context) {
 | 
				
			|||||||
	ctx.HTML(200, COLLABORATION)
 | 
						ctx.HTML(200, COLLABORATION)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func CollaborationPost(ctx *middleware.Context) {
 | 
				
			||||||
 | 
						name := strings.ToLower(ctx.Query("collaborator"))
 | 
				
			||||||
 | 
						if len(name) == 0 || ctx.Repo.Owner.LowerName == name {
 | 
				
			||||||
 | 
							ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						u, err := models.GetUserByName(name)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if models.IsErrUserNotExist(err) {
 | 
				
			||||||
 | 
								ctx.Flash.Error(ctx.Tr("form.user_not_exist"))
 | 
				
			||||||
 | 
								ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								ctx.Handle(500, "GetUserByName", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Organization is not allowed to be added as a collaborator.
 | 
				
			||||||
 | 
						if u.IsOrganization() {
 | 
				
			||||||
 | 
							ctx.Flash.Error(ctx.Tr("repo.settings.org_not_allowed_to_be_collaborator"))
 | 
				
			||||||
 | 
							ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Check if user is organization member.
 | 
				
			||||||
 | 
						if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
 | 
				
			||||||
 | 
							ctx.Flash.Info(ctx.Tr("repo.settings.user_is_org_member"))
 | 
				
			||||||
 | 
							ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = ctx.Repo.Repository.AddCollaborator(u); err != nil {
 | 
				
			||||||
 | 
							ctx.Handle(500, "AddCollaborator", err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if setting.Service.EnableNotifyMail {
 | 
				
			||||||
 | 
							if err = mailer.SendCollaboratorMail(ctx.Render, u, ctx.User, ctx.Repo.Repository); err != nil {
 | 
				
			||||||
 | 
								ctx.Handle(500, "SendCollaboratorMail", err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx.Flash.Success(ctx.Tr("repo.settings.add_collaborator_success"))
 | 
				
			||||||
 | 
						ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) {
 | 
					func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) {
 | 
				
			||||||
	owner, err := models.GetUserByName(ctx.Params(":username"))
 | 
						owner, err := models.GetUserByName(ctx.Params(":username"))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,7 @@
 | 
				
			|||||||
						<div class="inline field ui left">
 | 
											<div class="inline field ui left">
 | 
				
			||||||
							<div id="search-user-box">
 | 
												<div id="search-user-box">
 | 
				
			||||||
								<div class="ui input">
 | 
													<div class="ui input">
 | 
				
			||||||
									<input class="prompt" name="collaborator" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" required>
 | 
														<input class="prompt" name="collaborator" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" autofocus required>
 | 
				
			||||||
								</div>
 | 
													</div>
 | 
				
			||||||
								<div class="ui segment results hide"></div>
 | 
													<div class="ui segment results hide"></div>
 | 
				
			||||||
							</div>
 | 
												</div>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user