aboutsummaryrefslogtreecommitdiff
path: root/internal/route/org/setting.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2019-10-24 01:51:46 -0700
committerGitHub <noreply@github.com>2019-10-24 01:51:46 -0700
commit01c8df01ec0608f1f25b2f1444adabb98fa5ee8a (patch)
treef8a7e5dd8d2a8c51e1ce2cabb9d33571a93314dd /internal/route/org/setting.go
parent613139e7bef81d3573e7988a47eb6765f3de347a (diff)
internal: move packages under this directory (#5836)
* Rename pkg -> internal * Rename routes -> route * Move route -> internal/route * Rename models -> db * Move db -> internal/db * Fix route2 -> route * Move cmd -> internal/cmd * Bump version
Diffstat (limited to 'internal/route/org/setting.go')
-rw-r--r--internal/route/org/setting.go168
1 files changed, 168 insertions, 0 deletions
diff --git a/internal/route/org/setting.go b/internal/route/org/setting.go
new file mode 100644
index 00000000..ab1dd7ff
--- /dev/null
+++ b/internal/route/org/setting.go
@@ -0,0 +1,168 @@
+// 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 (
+ user2 "gogs.io/gogs/internal/route/user"
+ "strings"
+
+ log "gopkg.in/clog.v1"
+
+ "gogs.io/gogs/internal/context"
+ "gogs.io/gogs/internal/db"
+ "gogs.io/gogs/internal/db/errors"
+ "gogs.io/gogs/internal/form"
+ "gogs.io/gogs/internal/setting"
+)
+
+const (
+ SETTINGS_OPTIONS = "org/settings/options"
+ SETTINGS_DELETE = "org/settings/delete"
+ SETTINGS_WEBHOOKS = "org/settings/webhooks"
+)
+
+func Settings(c *context.Context) {
+ c.Data["Title"] = c.Tr("org.settings")
+ c.Data["PageIsSettingsOptions"] = true
+ c.HTML(200, SETTINGS_OPTIONS)
+}
+
+func SettingsPost(c *context.Context, f form.UpdateOrgSetting) {
+ c.Data["Title"] = c.Tr("org.settings")
+ c.Data["PageIsSettingsOptions"] = true
+
+ if c.HasError() {
+ c.HTML(200, SETTINGS_OPTIONS)
+ return
+ }
+
+ org := c.Org.Organization
+
+ // Check if organization name has been changed.
+ if org.LowerName != strings.ToLower(f.Name) {
+ isExist, err := db.IsUserExist(org.ID, f.Name)
+ if err != nil {
+ c.Handle(500, "IsUserExist", err)
+ return
+ } else if isExist {
+ c.Data["OrgName"] = true
+ c.RenderWithErr(c.Tr("form.username_been_taken"), SETTINGS_OPTIONS, &f)
+ return
+ } else if err = db.ChangeUserName(org, f.Name); err != nil {
+ c.Data["OrgName"] = true
+ switch {
+ case db.IsErrNameReserved(err):
+ c.RenderWithErr(c.Tr("user.form.name_reserved"), SETTINGS_OPTIONS, &f)
+ case db.IsErrNamePatternNotAllowed(err):
+ c.RenderWithErr(c.Tr("user.form.name_pattern_not_allowed"), SETTINGS_OPTIONS, &f)
+ default:
+ c.Handle(500, "ChangeUserName", err)
+ }
+ return
+ }
+ // reset c.org.OrgLink with new name
+ c.Org.OrgLink = setting.AppSubURL + "/org/" + f.Name
+ log.Trace("Organization name changed: %s -> %s", org.Name, f.Name)
+ }
+ // In case it's just a case change.
+ org.Name = f.Name
+ org.LowerName = strings.ToLower(f.Name)
+
+ if c.User.IsAdmin {
+ org.MaxRepoCreation = f.MaxRepoCreation
+ }
+
+ org.FullName = f.FullName
+ org.Description = f.Description
+ org.Website = f.Website
+ org.Location = f.Location
+ if err := db.UpdateUser(org); err != nil {
+ c.Handle(500, "UpdateUser", err)
+ return
+ }
+ log.Trace("Organization setting updated: %s", org.Name)
+ c.Flash.Success(c.Tr("org.settings.update_setting_success"))
+ c.Redirect(c.Org.OrgLink + "/settings")
+}
+
+func SettingsAvatar(c *context.Context, f form.Avatar) {
+ f.Source = form.AVATAR_LOCAL
+ if err := user2.UpdateAvatarSetting(c, f, c.Org.Organization); err != nil {
+ c.Flash.Error(err.Error())
+ } else {
+ c.Flash.Success(c.Tr("org.settings.update_avatar_success"))
+ }
+
+ c.Redirect(c.Org.OrgLink + "/settings")
+}
+
+func SettingsDeleteAvatar(c *context.Context) {
+ if err := c.Org.Organization.DeleteAvatar(); err != nil {
+ c.Flash.Error(err.Error())
+ }
+
+ c.Redirect(c.Org.OrgLink + "/settings")
+}
+
+func SettingsDelete(c *context.Context) {
+ c.Title("org.settings")
+ c.PageIs("SettingsDelete")
+
+ org := c.Org.Organization
+ if c.Req.Method == "POST" {
+ if _, err := db.UserLogin(c.User.Name, c.Query("password"), c.User.LoginSource); err != nil {
+ if errors.IsUserNotExist(err) {
+ c.RenderWithErr(c.Tr("form.enterred_invalid_password"), SETTINGS_DELETE, nil)
+ } else {
+ c.ServerError("UserLogin", err)
+ }
+ return
+ }
+
+ if err := db.DeleteOrganization(org); err != nil {
+ if db.IsErrUserOwnRepos(err) {
+ c.Flash.Error(c.Tr("form.org_still_own_repo"))
+ c.Redirect(c.Org.OrgLink + "/settings/delete")
+ } else {
+ c.ServerError("DeleteOrganization", err)
+ }
+ } else {
+ log.Trace("Organization deleted: %s", org.Name)
+ c.Redirect(setting.AppSubURL + "/")
+ }
+ return
+ }
+
+ c.Success(SETTINGS_DELETE)
+}
+
+func Webhooks(c *context.Context) {
+ c.Data["Title"] = c.Tr("org.settings")
+ c.Data["PageIsSettingsHooks"] = true
+ c.Data["BaseLink"] = c.Org.OrgLink
+ c.Data["Description"] = c.Tr("org.settings.hooks_desc")
+ c.Data["Types"] = setting.Webhook.Types
+
+ ws, err := db.GetWebhooksByOrgID(c.Org.Organization.ID)
+ if err != nil {
+ c.Handle(500, "GetWebhooksByOrgId", err)
+ return
+ }
+
+ c.Data["Webhooks"] = ws
+ c.HTML(200, SETTINGS_WEBHOOKS)
+}
+
+func DeleteWebhook(c *context.Context) {
+ if err := db.DeleteWebhookOfOrgByID(c.Org.Organization.ID, c.QueryInt64("id")); err != nil {
+ c.Flash.Error("DeleteWebhookByOrgID: " + err.Error())
+ } else {
+ c.Flash.Success(c.Tr("repo.settings.webhook_deletion_success"))
+ }
+
+ c.JSON(200, map[string]interface{}{
+ "redirect": c.Org.OrgLink + "/settings/hooks",
+ })
+}