|
@@ -10,7 +10,6 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
- "path"
|
|
|
|
|
|
|
|
"github.com/Unknwon/com"
|
|
"github.com/Unknwon/com"
|
|
|
|
|
|
@@ -170,22 +169,12 @@ func SettingsCollaboration(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
|
|
|
|
|
|
- repoLink := path.Join(ctx.Repo.Owner.LowerName, ctx.Repo.Repository.LowerName)
|
|
|
|
-
|
|
|
|
if ctx.Req.Method == "POST" {
|
|
if ctx.Req.Method == "POST" {
|
|
name := strings.ToLower(ctx.Query("collaborator"))
|
|
name := strings.ToLower(ctx.Query("collaborator"))
|
|
if len(name) == 0 || ctx.Repo.Owner.LowerName == name {
|
|
if len(name) == 0 || ctx.Repo.Owner.LowerName == name {
|
|
ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
|
|
ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- has, err := models.HasAccess(name, repoLink, models.WRITABLE)
|
|
|
|
- if err != nil {
|
|
|
|
- ctx.Handle(500, "HasAccess", err)
|
|
|
|
- return
|
|
|
|
- } else if has {
|
|
|
|
- ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
|
|
|
|
u, err := models.GetUserByName(name)
|
|
u, err := models.GetUserByName(name)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -205,9 +194,8 @@ func SettingsCollaboration(ctx *middleware.Context) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- if err = models.AddAccess(&models.Access{UserName: name, RepoName: repoLink,
|
|
+ if err = ctx.Repo.Repository.AddCollaborator(u); err != nil {
|
|
- Mode: models.WRITABLE}); err != nil {
|
|
+ ctx.Handle(500, "AddCollaborator", err)
|
|
- ctx.Handle(500, "AddAccess", err)
|
|
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
@@ -226,50 +214,27 @@ func SettingsCollaboration(ctx *middleware.Context) {
|
|
|
|
|
|
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 {
|
|
- needDelete := true
|
|
+ u, err := models.GetUserByName(remove)
|
|
- if ctx.User.IsOrganization() {
|
|
+ if err != nil {
|
|
-
|
|
+ ctx.Handle(500, "GetUserByName", err)
|
|
- auth, err := models.GetHighestAuthorize(ctx.Repo.Owner.Id, ctx.User.Id, ctx.Repo.Repository.Id, 0)
|
|
+ return
|
|
- if err != nil {
|
|
|
|
- ctx.Handle(500, "GetHighestAuthorize", err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if auth > 0 {
|
|
|
|
- needDelete = false
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
-
|
|
+ if err := ctx.Repo.Repository.DeleteCollaborator(u); err != nil {
|
|
- if needDelete {
|
|
+ ctx.Handle(500, "DeleteCollaborator", err)
|
|
- if err := models.DeleteAccess(&models.Access{UserName: remove, RepoName: repoLink}); err != nil {
|
|
+ return
|
|
- ctx.Handle(500, "DeleteAccess", err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
ctx.Flash.Success(ctx.Tr("repo.settings.remove_collaborator_success"))
|
|
ctx.Flash.Success(ctx.Tr("repo.settings.remove_collaborator_success"))
|
|
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
|
|
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- names, err := models.GetCollaboratorNames(repoLink)
|
|
+ users, err := ctx.Repo.Repository.GetCollaborators()
|
|
if err != nil {
|
|
if err != nil {
|
|
ctx.Handle(500, "GetCollaborators", err)
|
|
ctx.Handle(500, "GetCollaborators", err)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- collaborators := make([]*models.User, 0, len(names))
|
|
+ ctx.Data["Collaborators"] = users
|
|
- for _, name := range names {
|
|
|
|
- u, err := models.GetUserByName(name)
|
|
|
|
- if err != nil {
|
|
|
|
- ctx.Handle(500, "GetUserByName", err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- collaborators = append(collaborators, u)
|
|
|
|
- }
|
|
|
|
- ctx.Data["Collaborators"] = collaborators
|
|
|
|
ctx.HTML(200, COLLABORATION)
|
|
ctx.HTML(200, COLLABORATION)
|
|
}
|
|
}
|
|
|
|
|