1
1
mirror of https://github.com/go-gitea/gitea synced 2025-07-22 18:28:37 +00:00

Page: /org/:orgname/settings

This commit is contained in:
Unknwon
2014-08-14 14:12:21 +08:00
parent 2935ee440c
commit 5acc948562
19 changed files with 393 additions and 184 deletions

View File

@@ -13,30 +13,20 @@ import (
)
const (
HOME base.TplName = "org/home"
CREATE base.TplName = "org/create"
SETTINGS base.TplName = "org/settings"
HOME base.TplName = "org/home"
CREATE base.TplName = "org/create"
)
func Home(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Params(":org")
org := ctx.Org.Organization
ctx.Data["Title"] = org.Name
org, err := models.GetUserByName(ctx.Params(":org"))
if err != nil {
if err == models.ErrUserNotExist {
ctx.Handle(404, "GetUserByName", err)
} else {
ctx.Handle(500, "GetUserByName", err)
}
return
}
ctx.Data["Org"] = org
ctx.Data["Repos"], err = models.GetRepositories(org.Id, ctx.IsSigned && org.IsOrgMember(ctx.User.Id))
repos, err := models.GetRepositories(org.Id, ctx.IsSigned && org.IsOrgMember(ctx.User.Id))
if err != nil {
ctx.Handle(500, "GetRepositories", err)
return
}
ctx.Data["Repos"] = repos
if err = org.GetMembers(); err != nil {
ctx.Handle(500, "GetMembers", err)
@@ -94,97 +84,3 @@ func CreatePost(ctx *middleware.Context, form auth.CreateOrgForm) {
ctx.Redirect("/org/" + form.OrgName + "/dashboard")
}
func Settings(ctx *middleware.Context) {
ctx.Data["Title"] = "Settings"
org, err := models.GetUserByName(ctx.Params(":org"))
if err != nil {
if err == models.ErrUserNotExist {
ctx.Handle(404, "org.Settings(GetUserByName)", err)
} else {
ctx.Handle(500, "org.Settings(GetUserByName)", err)
}
return
}
ctx.Data["Org"] = org
ctx.HTML(200, SETTINGS)
}
func SettingsPost(ctx *middleware.Context, form auth.OrgSettingForm) {
ctx.Data["Title"] = "Settings"
org, err := models.GetUserByName(ctx.Params(":org"))
if err != nil {
if err == models.ErrUserNotExist {
ctx.Handle(404, "org.SettingsPost(GetUserByName)", err)
} else {
ctx.Handle(500, "org.SettingsPost(GetUserByName)", err)
}
return
}
ctx.Data["Org"] = org
if ctx.HasError() {
ctx.HTML(200, SETTINGS)
return
}
org.FullName = form.DisplayName
org.Email = form.Email
org.Description = form.Description
org.Website = form.Website
org.Location = form.Location
if err = models.UpdateUser(org); err != nil {
ctx.Handle(500, "org.SettingsPost(UpdateUser)", err)
return
}
log.Trace("%s Organization setting updated: %s", ctx.Req.RequestURI, org.LowerName)
ctx.Flash.Success("Organization profile has been successfully updated.")
ctx.Redirect("/org/" + org.Name + "/settings")
}
func DeletePost(ctx *middleware.Context) {
ctx.Data["Title"] = "Settings"
org, err := models.GetUserByName(ctx.Params(":org"))
if err != nil {
if err == models.ErrUserNotExist {
ctx.Handle(404, "org.DeletePost(GetUserByName)", err)
} else {
ctx.Handle(500, "org.DeletePost(GetUserByName)", err)
}
return
}
ctx.Data["Org"] = org
if !org.IsOrgOwner(ctx.User.Id) {
ctx.Error(403)
return
}
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 {
if err := models.DeleteOrganization(org); err != nil {
switch err {
case models.ErrUserOwnRepos:
ctx.Flash.Error("This organization still have ownership of repository, you have to delete or transfer them first.")
default:
ctx.Handle(500, "org.DeletePost(DeleteOrganization)", err)
return
}
} else {
ctx.Redirect("/")
return
}
}
ctx.Redirect("/org/" + org.Name + "/settings")
}

99
routers/org/setting.go Normal file
View File

@@ -0,0 +1,99 @@
// Copyright 2014 The Gogs 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 (
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/middleware"
)
const (
SETTINGS_OPTIONS base.TplName = "org/settings/options"
SETTINGS_DELETE base.TplName = "org/settings/delete"
)
func Settings(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Tr("org.settings")
ctx.Data["PageIsSettingsOptions"] = true
ctx.HTML(200, SETTINGS_OPTIONS)
}
func SettingsPost(ctx *middleware.Context, form auth.UpdateOrgSettingForm) {
ctx.Data["Title"] = ctx.Tr("org.settings")
ctx.Data["PageIsSettingsOptions"] = true
if ctx.HasError() {
ctx.HTML(200, SETTINGS_OPTIONS)
return
}
org := ctx.Org.Organization
// Check if organization name has been changed.
if org.Name != form.OrgUserName {
isExist, err := models.IsUserExist(form.OrgUserName)
if err != nil {
ctx.Handle(500, "IsUserExist", err)
return
} else if isExist {
ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SETTINGS_OPTIONS, &form)
return
} else if err = models.ChangeUserName(org, form.OrgUserName); err != nil {
if err == models.ErrUserNameIllegal {
ctx.Flash.Error(ctx.Tr("form.illegal_username"))
ctx.Redirect("/org/" + org.LowerName + "/settings")
return
} else {
ctx.Handle(500, "ChangeUserName", err)
}
return
}
log.Trace("Organization name changed: %s -> %s", org.Name, form.OrgUserName)
org.Name = form.OrgUserName
}
org.FullName = form.OrgFullName
org.Email = form.Email
org.Description = form.Description
org.Website = form.Website
org.Location = form.Location
org.Avatar = base.EncodeMd5(form.Avatar)
org.AvatarEmail = form.Avatar
if err := models.UpdateUser(org); err != nil {
ctx.Handle(500, "UpdateUser", err)
return
}
log.Trace("Organization setting updated: %s", org.Name)
ctx.Flash.Success(ctx.Tr("org.settings.update_setting_success"))
ctx.Redirect("/org/" + org.Name + "/settings")
}
func SettingsDelete(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Tr("org.settings")
ctx.Data["PageIsSettingsDelete"] = true
org := ctx.Org.Organization
if ctx.Req.Method == "POST" {
// TODO: validate password.
if err := models.DeleteOrganization(org); err != nil {
switch err {
case models.ErrUserOwnRepos:
ctx.Flash.Error(ctx.Tr("form.org_still_own_repo"))
ctx.Redirect("/org/" + org.LowerName + "/settings/delete")
default:
ctx.Handle(500, "DeleteOrganization", err)
}
} else {
log.Trace("Organization deleted: %s", ctx.User.Name)
ctx.Redirect("/")
}
return
}
ctx.HTML(200, SETTINGS_DELETE)
}

View File

@@ -252,16 +252,14 @@ func SettingsDelete(ctx *middleware.Context) {
case models.ErrUserOwnRepos:
ctx.Flash.Error(ctx.Tr("form.still_own_repo"))
ctx.Redirect("/user/settings/delete")
return
default:
ctx.Handle(500, "DeleteUser", err)
return
}
} else {
log.Trace("Account deleted: %s", ctx.User.Name)
ctx.Redirect("/")
return
}
return
}
ctx.HTML(200, SETTINGS_DELETE)