@@ -6,10 +6,13 @@ package org
66import (
77 "net/http"
88
9- "code.gitea.io/gitea/models/secret"
9+ secret_model "code.gitea.io/gitea/models/secret"
1010 "code.gitea.io/gitea/modules/context"
1111 api "code.gitea.io/gitea/modules/structs"
12+ "code.gitea.io/gitea/modules/web"
1213 "code.gitea.io/gitea/routers/api/v1/utils"
14+ "code.gitea.io/gitea/routers/web/shared/actions"
15+ "code.gitea.io/gitea/services/convert"
1316)
1417
1518// ListActionsSecrets list an organization's actions secrets
@@ -42,18 +45,18 @@ func ListActionsSecrets(ctx *context.APIContext) {
4245
4346// listActionsSecrets list an organization's actions secrets
4447func listActionsSecrets (ctx * context.APIContext ) {
45- opts := & secret .FindSecretsOptions {
48+ opts := & secret_model .FindSecretsOptions {
4649 OwnerID : ctx .Org .Organization .ID ,
4750 ListOptions : utils .GetListOptions (ctx ),
4851 }
4952
50- count , err := secret .CountSecrets (ctx , opts )
53+ count , err := secret_model .CountSecrets (ctx , opts )
5154 if err != nil {
5255 ctx .InternalServerError (err )
5356 return
5457 }
5558
56- secrets , err := secret .FindSecrets (ctx , * opts )
59+ secrets , err := secret_model .FindSecrets (ctx , * opts )
5760 if err != nil {
5861 ctx .InternalServerError (err )
5962 return
@@ -70,3 +73,43 @@ func listActionsSecrets(ctx *context.APIContext) {
7073 ctx .SetTotalCountHeader (count )
7174 ctx .JSON (http .StatusOK , apiSecrets )
7275}
76+
77+ // CreateOrgSecret create one secret of the organization
78+ func CreateOrgSecret (ctx * context.APIContext ) {
79+ // swagger:operation POST /orgs/{org}/actions/secrets organization createOrgSecret
80+ // ---
81+ // summary: Create a secret in an organization
82+ // consumes:
83+ // - application/json
84+ // produces:
85+ // - application/json
86+ // parameters:
87+ // - name: org
88+ // in: path
89+ // description: name of organization
90+ // type: string
91+ // required: true
92+ // - name: body
93+ // in: body
94+ // schema:
95+ // "$ref": "#/definitions/CreateSecretOption"
96+ // responses:
97+ // "201":
98+ // "$ref": "#/responses/Secret"
99+ // "400":
100+ // "$ref": "#/responses/error"
101+ // "404":
102+ // "$ref": "#/responses/notFound"
103+ // "403":
104+ // "$ref": "#/responses/forbidden"
105+ opt := web .GetForm (ctx ).(* api.CreateSecretOption )
106+ s , err := secret_model .InsertEncryptedSecret (
107+ ctx , ctx .Org .Organization .ID , 0 , opt .Name , actions .ReserveLineBreakForTextarea (opt .Data ),
108+ )
109+ if err != nil {
110+ ctx .Error (http .StatusInternalServerError , "InsertEncryptedSecret" , err )
111+ return
112+ }
113+
114+ ctx .JSON (http .StatusCreated , convert .ToSecret (s ))
115+ }
0 commit comments