From 32dcaefafa6039e8fe27d263290e33ce5e5d3aa5 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Mon, 17 Nov 2014 14:53:41 -0500 Subject: [PATCH] fox #620 --- conf/locale/locale_de-DE.ini | 14 ++++++++++++++ conf/locale/locale_en-US.ini | 1 + conf/locale/locale_fr-CA.ini | 14 ++++++++++++++ conf/locale/locale_nl-NL.ini | 14 ++++++++++++++ conf/locale/locale_zh-CN.ini | 16 +++++++++++++++- conf/locale/locale_zh-HK.ini | 14 ++++++++++++++ gogs.go | 2 +- models/user.go | 1 + modules/auth/admin.go | 17 +++++++++-------- modules/middleware/repo.go | 2 +- modules/setting/setting.go | 2 -- routers/admin/users.go | 3 ++- routers/repo/http.go | 3 ++- templates/.VERSION | 2 +- templates/admin/user/edit.tmpl | 14 +++++++++----- templates/repo/settings/nav.tmpl | 2 ++ 16 files changed, 100 insertions(+), 21 deletions(-) diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini index 4a076d97d..53e71d853 100755 --- a/conf/locale/locale_de-DE.ini +++ b/conf/locale/locale_de-DE.ini @@ -164,6 +164,7 @@ unable_verify_ssh_key=Gogs kann deinen SSH-Schlüssel nicht verifizieren, nimmt auth_failed=Authentifizierung fehlgeschlagen: %v still_own_repo=Dein Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden. +still_has_org=Ihr Konto noch Mitgliedschaft in der Organisation, Sie nach links oder löschen Sie sie zuerst. org_still_own_repo=Diese Organisation besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden. still_own_user=Diese Authentifizierung wird noch von einigen Benutzern genutzt. Entferne diese zuvor und lösche erneut. @@ -184,6 +185,7 @@ profile=Profil password=Passwort ssh_keys=SSH-Schlüssel social=Soziale Konten +applications=Anwendungen orgs=Organisationen delete=Konto löschen uid=Uid @@ -224,6 +226,16 @@ social_desc=Dies ist eine Liste verknüpfter sozialer Konten. Entferne alle Verk unbind=Verknüpfung entfernen unbind_success=Die Verknüpfung zum sozialen Konto wurde entfernt. +manage_access_token=Verwaltung persönlicher Zugangs-Tokens +generate_new_token=Neues Token erzeugen +tokens_desc=Die von dir erzeugten Tokens können zum Zugriff auf die Gogs-API verwendet werden. +new_token_desc=Momentan erlaubt jedes Token vollen Zugriff auf dein Konto. +token_name=Token-Name +generate_token=Token erzeugen +generate_token_succees=Neues Zugangs-Token wurde erstellt! Bitte kopiere dein persönliches Zugangs-Token jetzt. Du wirst es später nicht mehr anzeigen können! +delete_token=Löschen +delete_token_success=Persönliches Zugangs-Token wurde gelöscht! Vergiss nicht, auch deine Anwendungen zu aktualisieren. + delete_account=Konto löschen delete_prompt=Diese Aktion wird dein Konto dauerhaft löschen und kann NICHT rückgängig gemacht werden! confirm_delete_account=Löschen @@ -496,9 +508,11 @@ users.update_profile_success=Kontoprofil aktualisiert users.edit_account=Konto bearbeiten users.is_activated=Dieses Konto ist aktiviert users.is_admin=Dieses Konto hat Administratorrechte +users.allow_git_hook=Dieses Konto verfügt über Berechtigungen zum Erstellen von Git hooks users.update_profile=Kontoprofil aktualisieren users.delete_account=Dieses Konto löschen users.still_own_repo=Dieses Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden. +users.still_has_org=Dieses Konto noch Mitgliedschaft in der Organisation, Sie nach links oder löschen Sie sie zuerst. orgs.org_manage_panel=Organisationenverwaltung orgs.name=Name diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini index 4f1442d20..a061bcb21 100644 --- a/conf/locale/locale_en-US.ini +++ b/conf/locale/locale_en-US.ini @@ -508,6 +508,7 @@ users.update_profile_success = Account profile has been successfully updated. users.edit_account = Edit Account users.is_activated = This account is activated users.is_admin = This account has administrator permissions +users.allow_git_hook = This account has permissions to create Git hooks users.update_profile = Update Account Profile users.delete_account = Delete This Account users.still_own_repo = This account still have ownership of repository, you have to delete or transfer them first. diff --git a/conf/locale/locale_fr-CA.ini b/conf/locale/locale_fr-CA.ini index 40057ef2d..5ebe53e01 100755 --- a/conf/locale/locale_fr-CA.ini +++ b/conf/locale/locale_fr-CA.ini @@ -164,6 +164,7 @@ unable_verify_ssh_key=Gogs n'a pu vérifier la validité de votre clé SSH, mêm auth_failed=Échec d'authentification : %s still_own_repo=Votre compte comporte toujours des propriétés de Référentiel. Vous devez d'abord les supprimer ou les transférer. +still_has_org=Votre compte a toujours membres de l'organisation, vous avez à gauche ou supprimez tout d'abord. org_still_own_repo=Cette organisation comporte toujours des propriétés de Référentiel. Vous devez d'abord les supprimer ou les transférer. still_own_user=Cette authentification a déjà servi à d'autres utilisateurs. Veuillez les déplacer puis supprimez à nouveau. @@ -184,6 +185,7 @@ profile=Profil password=Mot de Passe ssh_keys=Clés SSH social=Réseaux Sociaux +applications=Applications orgs=Organisations delete=Supprimer le Compte uid=ID d'Utilisateur @@ -224,6 +226,16 @@ social_desc=Ceci est la liste des comptes de réseaux sociaux associés. Supprim unbind=Dissocier unbind_success=Compte de réseau social dissocié. +manage_access_token=Gérer les jetons d'accès personnels +generate_new_token=Générer le nouveau jeton +tokens_desc=Jetons, que vous avez généré qui peuvent être utilisés pour accéder à l'API Gogs. +new_token_desc=Comme pour l'instant, chaque jeton aura un accès complet à votre compte. +token_name=Nom du jeton +generate_token=Générer le jeton +generate_token_succees=Nouveau jeton d'accès a été généré avec succès ! Assurez-vous de copier votre nouveau jeton d'accès personnel maintenant. Vous ne serez pas en mesure de le revoir ! +delete_token=Supprimer +delete_token_success=Jeton d'accès personnelle a été supprimée avec succès ! N'oubliez pas de mettre à jour vos applications aussi bien. + delete_account=Supprimer le Compte delete_prompt=Votre compte sera supprimé définitivement et cette opération est IRRÉVERSIBLE ! confirm_delete_account=Confirmer la suppression @@ -496,9 +508,11 @@ users.update_profile_success=Profil mis à jour avec succès. users.edit_account=Modifier le Compte users.is_activated=Ce compte est activé users.is_admin=Ce compte possède un niveau d'accès administrateur +users.allow_git_hook=Ce compte dispose des autorisations pour créer des crochets de Git users.update_profile=Mettre le profil à jour users.delete_account=Supprimer ce Compte users.still_own_repo=Ce compte comporte toujours des propriétés de Référentiel. Vous devez d'abord les supprimer ou les transférer. +users.still_has_org=Ce compte a toujours membres de l'organisation, vous avez à gauche ou supprimez tout d'abord. orgs.org_manage_panel=Gestion des Organisations orgs.name=Nom diff --git a/conf/locale/locale_nl-NL.ini b/conf/locale/locale_nl-NL.ini index 3dce2bcaf..ab93b8e02 100755 --- a/conf/locale/locale_nl-NL.ini +++ b/conf/locale/locale_nl-NL.ini @@ -164,6 +164,7 @@ unable_verify_ssh_key=Gogs kan niet controleren of uw SSH-sleutel, maar wij gaan auth_failed=Verificatie mislukt: %v still_own_repo=Uw account heeft nog een eigendom op een repositorie. U moet deze eerst verwijderen of overdragen. +still_has_org=Uw account nog steeds lidmaatschap van organisatie, u hebt naar links of hen eerst verwijderen. org_still_own_repo=De organisatie heeft nog eigendomen op repositories. U moet deze eerst verwijderen of overdragen. still_own_user=Deze authenticatie methode wordt nog gebruikt door sommige gebruikers. U moet hen eerst verplaatsen of verwijderen. @@ -184,6 +185,7 @@ profile=Profiel password=Wachtwoord ssh_keys=SSH-sleutels social=Sociale netwerk-accounts +applications=Toepassingen orgs=Organisaties delete=Verwijder account uid=uid @@ -224,6 +226,16 @@ social_desc=Dit is een lijst van de bijbehorende sociale accounts koppelingen, V unbind=Loskoppelen unbind_success=Sociaal account is ontkoppeld. +manage_access_token=Persoonlijke toegangstokens beheren +generate_new_token=Nieuwe Token genereren +tokens_desc=Tokens u hebt gegenereerd die kunnen worden gebruikt voor toegang tot de API Gogs. +new_token_desc=Zoals voor nu, moet elke token zal hebben volledige toegang tot uw account. +token_name=Symbolische naam +generate_token=Token genereren +generate_token_succees=Nieuwe toegangstoken is met succes gegenereerd! Zorg ervoor dat uw nieuwe persoonlijke toegangstoken nu kopiëren. U zal niet zitten kundig voor zien het weer! +delete_token=Verwijderen +delete_token_success=Persoonlijke toegangstoken is met succes verwijderd! Vergeet niet uw toepassingen ook wilt bijwerken. + delete_account=Verwijder uw account delete_prompt=Deze handeling zal uw account definitief verwijderen, u kunt dit NIET terug draaien! confirm_delete_account=Bevestig verwijdering @@ -496,9 +508,11 @@ users.update_profile_success=Profiel is succesvol bijgewerkt. users.edit_account=Bewerk account users.is_activated=Dit account is geactiveerd users.is_admin=Dit account heeft beheerdersrechten +users.allow_git_hook=Deze account beschikt over machtigingen voor het maken van Git haken users.update_profile=Account profiel bijwerken users.delete_account=Dit account verwijderen users.still_own_repo=Dit account is nog steeds eigendom van een repositorie. U moet deze repositorie eerst verwijderen of overdragen. +users.still_has_org=Deze account nog steeds lidmaatschap van organisatie, u hebt naar links of hen eerst verwijderen. orgs.org_manage_panel=Organisaties beheren orgs.name=Naam diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini index d22be191a..bf1b21a42 100755 --- a/conf/locale/locale_zh-CN.ini +++ b/conf/locale/locale_zh-CN.ini @@ -164,6 +164,7 @@ unable_verify_ssh_key=Gogs 无法验证您输入的 SSH 密钥,但我们假设 auth_failed=授权验证失败:%v still_own_repo=您的帐户仍然是某些仓库的拥有者,您必须先转移或删除它们才能执行删除帐户操作! +still_has_org=您的帐户仍旧是某些组织的成员,您必须先离开或删除组织。 org_still_own_repo=该组织仍然是某些仓库的拥有者,您必须先转移或删除它们才能执行删除组织操作! still_own_user=该授权认证依旧被部分用户使用,请先删除该部分用户后再试! @@ -184,6 +185,7 @@ profile=个人信息 password=修改密码 ssh_keys=管理 SSH 密钥 social=社交帐号绑定 +applications=管理授权应用 orgs=管理组织 delete=删除帐户 uid=用户 ID @@ -224,6 +226,16 @@ social_desc=以下是与您帐户所关联的社交帐号,如果您发现有 unbind=解除绑定 unbind_success=社交帐号解除绑定成功! +manage_access_token=管理个人操作令牌 +generate_new_token=生成新的令牌 +tokens_desc=您可以使用这些已生成的令牌来操作 Gogs API。 +new_token_desc=目前为止,任何令牌都对您的帐户拥有完整的操作权限。 +token_name=令牌名称 +generate_token=生成令牌 +generate_token_succees=新的操作令牌生成成功!您必须立即复制到一个安全的地方,因为该令牌只会显示一次! +delete_token=删除令牌 +delete_token_success=个人操作令牌删除成功!请更新与该令牌有关的所有应用。 + delete_account=删除当前帐户 delete_prompt=删除操作会永久清除您的帐户信息,并且 不可恢复! confirm_delete_account=确认删除帐户 @@ -482,7 +494,7 @@ dashboard.last_gc_pause=上次 GC 暂停时间 dashboard.gc_times=GC 执行次数 users.user_manage_panel=用户管理面板 -users.new_account=您尝试添加到团队的仓库不存在,请先创建仓库! +users.new_account=创建新的帐户 users.name=用户名 users.activated=已激活 users.admin=管理员 @@ -496,9 +508,11 @@ users.update_profile_success=该用户信息更新成功! users.edit_account=编辑用户信息 users.is_activated=该用户已被激活 users.is_admin=该用户具有管理员权限 +users.allow_git_hook=该帐户具有创建 Git 钩子的权限 users.update_profile=更新用户信息 users.delete_account=删除该用户 users.still_own_repo=该帐户仍然是某些仓库的拥有者,您必须先转移或删除它们才能执行删除帐户操作! +users.still_has_org=该帐户仍旧是某些组织的成员,您必须先使其离开或删除组织。 orgs.org_manage_panel=组织管理面板 orgs.name=组织名称 diff --git a/conf/locale/locale_zh-HK.ini b/conf/locale/locale_zh-HK.ini index 8cd2c50f0..25974e7d0 100755 --- a/conf/locale/locale_zh-HK.ini +++ b/conf/locale/locale_zh-HK.ini @@ -164,6 +164,7 @@ unable_verify_ssh_key=Gogs 無法驗證您輸入的 SSH 密鑰,但我們假設 auth_failed=授權驗證失敗:%v still_own_repo=您的帳戶仍然是某些倉庫的擁有者,您必須先轉移或刪除它們才能執行刪除帳戶操作! +still_has_org=您的帳戶仍舊是某些組織的成員,您必須先離開或刪除組織。 org_still_own_repo=該組織仍然是某些倉庫的擁有者,您必須先轉移或刪除它們才能執行刪除組織操作! still_own_user=該授權認證依舊被部分用戶使用,請先刪除該部分用戶後再試! @@ -184,6 +185,7 @@ profile=個人信息 password=修改密碼 ssh_keys=管理 SSH 密鑰 social=社交帳號綁定 +applications=管理授權應用 orgs=管理組織 delete=刪除帳戶 uid=用戶 ID @@ -224,6 +226,16 @@ social_desc=以下是與您帳戶所關聯的社交帳號,如果您發現有 unbind=解除綁定 unbind_success=社交帳號解除綁定成功! +manage_access_token=管理個人操作令牌 +generate_new_token=生成新的令牌 +tokens_desc=您可以使用這些已生成的令牌來操作 Gogs API。 +new_token_desc=目前為止,任何令牌都對您的帳戶擁有完整的操作權限。 +token_name=令牌名稱 +generate_token=生成令牌 +generate_token_succees=新的操作令牌生成成功!您必須立即復製到一個安全的地方,因為該令牌只會顯示一次! +delete_token=删除令牌 +delete_token_success=個人操作令牌刪除成功!請更新與該令牌有關的所有應用。 + delete_account=刪除當前帳戶 delete_prompt=刪除操作會永久清除您的帳戶信息,並且 不可恢復! confirm_delete_account=確認刪除帳戶 @@ -496,9 +508,11 @@ users.update_profile_success=該用戶信息更新成功! users.edit_account=編輯用戶信息 users.is_activated=該用戶已被激活 users.is_admin=該用戶具有管理員權限 +users.allow_git_hook=該帳戶具有創建 Git 鉤子的權限 users.update_profile=更新用戶信息 users.delete_account=刪除該用戶 users.still_own_repo=該帳戶仍然是某些倉庫的擁有者,您必須先轉移或刪除它們才能執行刪除帳戶操作! +users.still_has_org=該帳戶仍舊是某些組織的成員,您必須先使其離開或刪除組織。 orgs.org_manage_panel=組織管理面版 orgs.name=組織名稱 diff --git a/gogs.go b/gogs.go index 01cee6138..e43229555 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.5.8.1116 Beta" +const APP_VER = "0.5.8.1117 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/user.go b/models/user.go index 7038e075f..31f4a289f 100644 --- a/models/user.go +++ b/models/user.go @@ -67,6 +67,7 @@ type User struct { Website string IsActive bool IsAdmin bool + AllowGitHook bool Rands string `xorm:"VARCHAR(10)"` Salt string `xorm:"VARCHAR(10)"` Created time.Time `xorm:"CREATED"` diff --git a/modules/auth/admin.go b/modules/auth/admin.go index 60ea3a3cc..6fec6ce73 100644 --- a/modules/auth/admin.go +++ b/modules/auth/admin.go @@ -11,14 +11,15 @@ import ( ) type AdminEditUserForm struct { - Email string `form:"email" binding:"Required;Email;MaxSize(50)"` - Passwd string `form:"password"` - Website string `form:"website" binding:"MaxSize(50)"` - Location string `form:"location" binding:"MaxSize(50)"` - Avatar string `form:"avatar" binding:"Required;Email;MaxSize(50)"` - Active bool `form:"active"` - Admin bool `form:"admin"` - LoginType int `form:"login_type"` + Email string `form:"email" binding:"Required;Email;MaxSize(50)"` + Passwd string `form:"password"` + Website string `form:"website" binding:"MaxSize(50)"` + Location string `form:"location" binding:"MaxSize(50)"` + Avatar string `form:"avatar" binding:"Required;Email;MaxSize(50)"` + Active bool `form:"active"` + Admin bool `form:"admin"` + AllowGitHook bool `form:"allow_git_hook"` + LoginType int `form:"login_type"` } func (f *AdminEditUserForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go index 2d311d213..0aae122d2 100644 --- a/modules/middleware/repo.go +++ b/modules/middleware/repo.go @@ -454,7 +454,7 @@ func RequireTrueOwner() macaron.Handler { // GitHookService checks if repsitory Git hooks service has been enabled. func GitHookService() macaron.Handler { return func(ctx *Context) { - if !setting.Service.EnableGitHooks { + if !ctx.User.AllowGitHook && !ctx.User.IsAdmin { ctx.Handle(404, "GitHookService", nil) return } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 6b1b9fed4..0f293b690 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -285,7 +285,6 @@ var Service struct { LdapAuth bool ActiveCodeLives int ResetPwdCodeLives int - EnableGitHooks bool } func newService() { @@ -295,7 +294,6 @@ func newService() { Service.RequireSignInView = Cfg.MustBool("service", "REQUIRE_SIGNIN_VIEW") Service.EnableCacheAvatar = Cfg.MustBool("service", "ENABLE_CACHE_AVATAR") Service.EnableReverseProxyAuth = Cfg.MustBool("service", "ENABLE_REVERSE_PROXY_AUTHENTICATION") - Service.EnableGitHooks = Cfg.MustBool("service", "ENABLE_GIT_HOOKS") } var logLevels = map[string]string{ diff --git a/routers/admin/users.go b/routers/admin/users.go index ac33fd62b..0a1056f3b 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -174,7 +174,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { return } - // NOTE: need password length check? + // FIXME: need password length check if len(form.Passwd) > 0 { u.Passwd = form.Passwd u.Salt = models.GetUserSalt() @@ -191,6 +191,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { u.AvatarEmail = form.Avatar u.IsActive = form.Active u.IsAdmin = form.Admin + u.AllowGitHook = form.AllowGitHook if err := models.UpdateUser(u); err != nil { ctx.Handle(500, "UpdateUser", err) return diff --git a/routers/repo/http.go b/routers/repo/http.go index 0ce83cef4..2dc66449d 100644 --- a/routers/repo/http.go +++ b/routers/repo/http.go @@ -14,9 +14,9 @@ import ( "os" "os/exec" "path" - "path/filepath" "regexp" + "runtime" "strconv" "strings" "time" @@ -184,6 +184,7 @@ func Http(ctx *middleware.Context) { handler := HttpBackend(&config) handler(ctx.Resp, ctx.Req.Request) + runtime.GC() } type route struct { diff --git a/templates/.VERSION b/templates/.VERSION index 78403f16c..43806b4f3 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.5.8.1116 Beta \ No newline at end of file +0.5.8.1117 Beta \ No newline at end of file diff --git a/templates/admin/user/edit.tmpl b/templates/admin/user/edit.tmpl index 1d4cf806f..317349935 100644 --- a/templates/admin/user/edit.tmpl +++ b/templates/admin/user/edit.tmpl @@ -56,15 +56,19 @@ {{.i18n.Tr "admin.users.is_activated"}} -
- - - {{.i18n.Tr "admin.users.is_admin"}} +
+ + + {{.i18n.Tr "admin.users.is_admin"}} +
+ + + {{.i18n.Tr "admin.users.allow_git_hook"}}
-       +     
diff --git a/templates/repo/settings/nav.tmpl b/templates/repo/settings/nav.tmpl index 16128f015..6803c5638 100644 --- a/templates/repo/settings/nav.tmpl +++ b/templates/repo/settings/nav.tmpl @@ -5,7 +5,9 @@
  • {{.i18n.Tr "repo.settings.options"}}
  • {{.i18n.Tr "repo.settings.collaboration"}}
  • {{.i18n.Tr "repo.settings.hooks"}}
  • + {{if or .SignedUser.AllowGitHook .SignedUser.IsAdmin}}
  • {{.i18n.Tr "repo.settings.githooks"}}
  • + {{end}}