summaryrefslogtreecommitdiffstats
path: root/templates/org/settings
diff options
context:
space:
mode:
authorJason Song <i@wolfogre.com>2022-12-20 17:07:13 +0800
committerGitHub <noreply@github.com>2022-12-20 17:07:13 +0800
commit659055138b6d32492b20c9f4d1d5a3cdaa47188d (patch)
treee2e7741be2b7b349e04f6901bff92b75b9b7c9ac /templates/org/settings
parent40ba750c4bf1f3f5f8dff5af57b2db4b600f237f (diff)
downloadgitea-659055138b6d32492b20c9f4d1d5a3cdaa47188d.tar.gz
gitea-659055138b6d32492b20c9f4d1d5a3cdaa47188d.zip
Secrets storage with SecretKey encrypted (#22142)
Fork of #14483, but [gave up MasterKey](https://github.com/go-gitea/gitea/pull/14483#issuecomment-1350728557), and fixed some problems. Close #12065. Needed by #13539. Featrues: - Secrets for repo and org, not user yet. - Use SecretKey to encrypte/encrypt secrets. - Trim spaces of secret value. - Add a new locale ini block, to make it easy to support secrets for user. Snapshots: Repo level secrets: ![image](https://user-images.githubusercontent.com/9418365/207823319-b8a4903f-38ca-4af7-9d05-336a5af906f3.png) Rrg level secrets ![image](https://user-images.githubusercontent.com/9418365/207823371-8bd02e93-1928-40d1-8c76-f48b255ace36.png) Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
Diffstat (limited to 'templates/org/settings')
-rw-r--r--templates/org/settings/navbar.tmpl3
-rw-r--r--templates/org/settings/secrets.tmpl83
2 files changed, 86 insertions, 0 deletions
diff --git a/templates/org/settings/navbar.tmpl b/templates/org/settings/navbar.tmpl
index 9ff30ae4ff..765bb6aaae 100644
--- a/templates/org/settings/navbar.tmpl
+++ b/templates/org/settings/navbar.tmpl
@@ -12,6 +12,9 @@
<a class="{{if .PageIsOrgSettingsLabels}}active {{end}}item" href="{{.OrgLink}}/settings/labels">
{{.locale.Tr "repo.labels"}}
</a>
+ <a class="{{if .PageIsOrgSettingsSecrets}}active {{end}}item" href="{{.OrgLink}}/settings/secrets">
+ {{.locale.Tr "secrets.secrets"}}
+ </a>
{{if .EnableOAuth2}}
<a class="{{if .PageIsSettingsApplications}}active {{end}}item" href="{{.OrgLink}}/settings/applications">
{{.locale.Tr "settings.applications"}}
diff --git a/templates/org/settings/secrets.tmpl b/templates/org/settings/secrets.tmpl
new file mode 100644
index 0000000000..dd2a437b75
--- /dev/null
+++ b/templates/org/settings/secrets.tmpl
@@ -0,0 +1,83 @@
+{{template "base/head" .}}
+<div class="page-content organization settings webhooks">
+ {{template "org/header" .}}
+ <div class="ui container">
+ <div class="ui grid">
+ {{template "org/settings/navbar" .}}
+ <div class="ui twelve wide column content">
+ {{template "base/alert" .}}
+ <h4 class="ui top attached header">
+ {{.locale.Tr "secrets.secrets"}}
+ <div class="ui right">
+ <div class="ui primary tiny show-panel button" data-panel="#add-secret-panel">{{.locale.Tr "secrets.creation"}}</div>
+ </div>
+ </h4>
+ <div class="ui attached segment">
+ <div class="{{if not .HasError}}hide {{end}}mb-4" id="add-secret-panel">
+ <form class="ui form" action="{{.Link}}" method="post">
+ {{.CsrfTokenHtml}}
+ <div class="field">
+ {{.locale.Tr "secrets.description"}}
+ </div>
+ <div class="field{{if .Err_Title}} error{{end}}">
+ <label for="secret-title">{{.locale.Tr "secrets.name"}}</label>
+ <input id="secret-title" name="title" value="{{.title}}" autofocus required pattern="^[a-zA-Z_][a-zA-Z0-9_]*$" placeholder="{{.locale.Tr "secrets.creation.name_placeholder"}}">
+ </div>
+ <div class="field{{if .Err_Content}} error{{end}}">
+ <label for="secret-content">{{.locale.Tr "secrets.value"}}</label>
+ <textarea id="secret-content" name="content" required placeholder="{{.locale.Tr "secrets.creation.value_placeholder"}}">{{.content}}</textarea>
+ </div>
+ <button class="ui green button">
+ {{.locale.Tr "secrets.creation"}}
+ </button>
+ <button class="ui hide-panel button" data-panel="#add-secret-panel">
+ {{.locale.Tr "cancel"}}
+ </button>
+ </form>
+ </div>
+ {{if .Secrets}}
+ <div class="ui key list">
+ {{range .Secrets}}
+ <div class="item">
+ <div class="right floated content">
+ <button class="ui red tiny button delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}">
+ {{$.locale.Tr "settings.delete_key"}}
+ </button>
+ </div>
+ <div class="left floated content">
+ <i>{{svg "octicon-key" 32}}</i>
+ </div>
+ <div class="content">
+ <strong>{{.Name}}</strong>
+ <div class="print meta">******</div>
+ <div class="activity meta">
+ <i>
+ {{$.locale.Tr "settings.add_on"}}
+ <span>{{.CreatedUnix.FormatShort}}</span>
+ </i>
+ </div>
+ </div>
+ </div>
+ {{end}}
+ </div>
+ {{else}}
+ {{.locale.Tr "secrets.none"}}
+ {{end}}
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="ui small basic delete modal">
+ <div class="ui header">
+ {{svg "octicon-trash" 16 "mr-2"}}
+ {{.locale.Tr "secrets.deletion"}}
+ </div>
+ <div class="content">
+ <p>{{.locale.Tr "secrets.deletion.description"}}</p>
+ </div>
+ {{template "base/delete_modal_actions" .}}
+</div>
+
+{{template "base/footer" .}}