#1067: Deleting users should remove them from collaborator lists
- fix delete user but repository watches are not decreased
This commit is contained in:
parent
33894591a6
commit
466facc009
13 changed files with 175 additions and 109 deletions
|
@ -222,11 +222,11 @@ func DeleteUser(ctx *middleware.Context) {
|
|||
}
|
||||
|
||||
if err = models.DeleteUser(u); err != nil {
|
||||
switch err {
|
||||
case models.ErrUserOwnRepos:
|
||||
switch {
|
||||
case models.IsErrUserOwnRepos(err):
|
||||
ctx.Flash.Error(ctx.Tr("admin.users.still_own_repo"))
|
||||
ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid"))
|
||||
case models.ErrUserHasOrgs:
|
||||
case models.IsErrUserHasOrgs(err):
|
||||
ctx.Flash.Error(ctx.Tr("admin.users.still_has_org"))
|
||||
ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid"))
|
||||
default:
|
||||
|
|
|
@ -61,14 +61,14 @@ func MembersAction(ctx *middleware.Context) {
|
|||
return
|
||||
}
|
||||
err = org.RemoveMember(uid)
|
||||
if err == models.ErrLastOrgOwner {
|
||||
if models.IsErrLastOrgOwner(err) {
|
||||
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
|
||||
ctx.Redirect(ctx.Org.OrgLink + "/members")
|
||||
return
|
||||
}
|
||||
case "leave":
|
||||
err = org.RemoveMember(ctx.User.Id)
|
||||
if err == models.ErrLastOrgOwner {
|
||||
if models.IsErrLastOrgOwner(err) {
|
||||
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
|
||||
ctx.Redirect(ctx.Org.OrgLink + "/members")
|
||||
return
|
||||
|
|
|
@ -87,13 +87,12 @@ func SettingsDelete(ctx *middleware.Context) {
|
|||
|
||||
org := ctx.Org.Organization
|
||||
if ctx.Req.Method == "POST" {
|
||||
// TODO: validate password.
|
||||
// FIXME: validate password.
|
||||
if err := models.DeleteOrganization(org); err != nil {
|
||||
switch err {
|
||||
case models.ErrUserOwnRepos:
|
||||
if models.IsErrUserOwnRepos(err) {
|
||||
ctx.Flash.Error(ctx.Tr("form.org_still_own_repo"))
|
||||
ctx.Redirect(setting.AppSubUrl + "/org/" + org.LowerName + "/settings/delete")
|
||||
default:
|
||||
} else {
|
||||
ctx.Handle(500, "DeleteOrganization", err)
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -91,7 +91,7 @@ func TeamsAction(ctx *middleware.Context) {
|
|||
}
|
||||
|
||||
if err != nil {
|
||||
if err == models.ErrLastOrgOwner {
|
||||
if models.IsErrLastOrgOwner(err) {
|
||||
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
|
||||
} else {
|
||||
log.Error(3, "Action(%s): %v", ctx.Params(":action"), err)
|
||||
|
|
|
@ -270,12 +270,12 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) {
|
|||
}
|
||||
|
||||
act := &models.Action{
|
||||
ActUserId: ctx.User.Id,
|
||||
ActUserID: ctx.User.Id,
|
||||
ActUserName: ctx.User.Name,
|
||||
ActEmail: ctx.User.Email,
|
||||
OpType: models.CREATE_ISSUE,
|
||||
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Name),
|
||||
RepoId: ctx.Repo.Repository.Id,
|
||||
RepoID: ctx.Repo.Repository.Id,
|
||||
RepoUserName: ctx.Repo.Owner.Name,
|
||||
RepoName: ctx.Repo.Repository.Name,
|
||||
RefName: ctx.Repo.BranchName,
|
||||
|
@ -845,12 +845,12 @@ func Comment(ctx *middleware.Context) {
|
|||
|
||||
// Notify watchers.
|
||||
act := &models.Action{
|
||||
ActUserId: ctx.User.Id,
|
||||
ActUserID: ctx.User.Id,
|
||||
ActUserName: ctx.User.LowerName,
|
||||
ActEmail: ctx.User.Email,
|
||||
OpType: models.COMMENT_ISSUE,
|
||||
Content: fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]),
|
||||
RepoId: ctx.Repo.Repository.Id,
|
||||
RepoID: ctx.Repo.Repository.Id,
|
||||
RepoUserName: ctx.Repo.Owner.LowerName,
|
||||
RepoName: ctx.Repo.Repository.LowerName,
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ func Dashboard(ctx *middleware.Context) {
|
|||
for _, act := range actions {
|
||||
if act.IsPrivate {
|
||||
// This prevents having to retrieve the repository for each action
|
||||
repo := &models.Repository{Id: act.RepoId, IsPrivate: true}
|
||||
repo := &models.Repository{Id: act.RepoID, IsPrivate: true}
|
||||
if act.RepoUserName != ctx.User.LowerName {
|
||||
if has, _ := models.HasAccess(ctx.User, repo, models.ACCESS_MODE_READ); !has {
|
||||
continue
|
||||
|
@ -216,7 +216,7 @@ func Profile(ctx *middleware.Context) {
|
|||
continue
|
||||
}
|
||||
// This prevents having to retrieve the repository for each action
|
||||
repo := &models.Repository{Id: act.RepoId, IsPrivate: true}
|
||||
repo := &models.Repository{Id: act.RepoID, IsPrivate: true}
|
||||
if act.RepoUserName != ctx.User.LowerName {
|
||||
if has, _ := models.HasAccess(ctx.User, repo, models.ACCESS_MODE_READ); !has {
|
||||
continue
|
||||
|
|
|
@ -451,20 +451,13 @@ func SettingsDelete(ctx *middleware.Context) {
|
|||
ctx.Data["PageIsSettingsDelete"] = true
|
||||
|
||||
if ctx.Req.Method == "POST" {
|
||||
// tmpUser := models.User{
|
||||
// Passwd: ctx.Query("password"),
|
||||
// Salt: ctx.User.Salt,
|
||||
// }
|
||||
// tmpUser.EncodePasswd()
|
||||
// if tmpUser.Passwd != ctx.User.Passwd {
|
||||
// ctx.Flash.Error("Password is not correct. Make sure you are owner of this account.")
|
||||
// } else {
|
||||
// FIXME: validate password.
|
||||
if err := models.DeleteUser(ctx.User); err != nil {
|
||||
switch err {
|
||||
case models.ErrUserOwnRepos:
|
||||
switch {
|
||||
case models.IsErrUserOwnRepos(err):
|
||||
ctx.Flash.Error(ctx.Tr("form.still_own_repo"))
|
||||
ctx.Redirect(setting.AppSubUrl + "/user/settings/delete")
|
||||
case models.ErrUserHasOrgs:
|
||||
case models.IsErrUserHasOrgs(err):
|
||||
ctx.Flash.Error(ctx.Tr("form.still_has_org"))
|
||||
ctx.Redirect(setting.AppSubUrl + "/user/settings/delete")
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue