8
8
"github.com/labstack/echo"
9
9
)
10
10
11
- type secret struct {
11
+ type addSecret struct {
12
12
Key string `json:"key"`
13
13
Value string `json:"value"`
14
14
}
@@ -18,39 +18,25 @@ type updateSecret struct {
18
18
Value string `json:"newvalue"`
19
19
}
20
20
21
- // UpdateSecret updates a secret using the vault.
22
- func UpdateSecret (c echo.Context ) error {
23
- s := new (updateSecret )
24
- err := c .Bind (s )
25
- if err != nil {
26
- return c .String (http .StatusBadRequest , err .Error ())
27
- }
28
- cert , err := security .InitCA ()
29
- if err != nil {
30
- return c .String (http .StatusInternalServerError , err .Error ())
31
- }
32
- v , err := security .NewVault (cert )
33
- if err != nil {
34
- return c .String (http .StatusInternalServerError , err .Error ())
35
- }
36
- err = v .LoadSecrets ()
37
- if err != nil {
38
- return c .String (http .StatusInternalServerError , err .Error ())
39
- }
40
- v .Add (s .Key , []byte (s .Value ))
41
- err = v .SaveSecrets ()
42
- if err != nil {
43
- return c .String (http .StatusInternalServerError , err .Error ())
44
- }
45
- return c .String (http .StatusOK , "secret successfully updated" )
46
- }
47
-
48
- // AddSecret creates a secret using the vault.
49
- func AddSecret (c echo.Context ) error {
50
- s := new (secret )
51
- err := c .Bind (s )
52
- if err != nil {
53
- return c .String (http .StatusBadRequest , err .Error ())
21
+ // SetSecret creates or updates a given secret
22
+ func SetSecret (c echo.Context ) error {
23
+ var key , value string
24
+ if c .Request ().Method == "POST" {
25
+ s := new (addSecret )
26
+ err := c .Bind (s )
27
+ if err != nil {
28
+ return c .String (http .StatusBadRequest , err .Error ())
29
+ }
30
+ key = s .Key
31
+ value = s .Value
32
+ } else if c .Request ().Method == "PUT" {
33
+ s := new (updateSecret )
34
+ err := c .Bind (s )
35
+ if err != nil {
36
+ return c .String (http .StatusBadRequest , err .Error ())
37
+ }
38
+ key = s .Key
39
+ value = s .Value
54
40
}
55
41
cert , err := security .InitCA ()
56
42
if err != nil {
@@ -64,17 +50,17 @@ func AddSecret(c echo.Context) error {
64
50
if err != nil {
65
51
return c .String (http .StatusInternalServerError , err .Error ())
66
52
}
67
- v .Add (s . Key , []byte (s . Value ))
53
+ v .Add (key , []byte (value ))
68
54
err = v .SaveSecrets ()
69
55
if err != nil {
70
56
return c .String (http .StatusInternalServerError , err .Error ())
71
57
}
72
- return c .String (http .StatusCreated , "secret successfully added " )
58
+ return c .String (http .StatusOK , "secret successfully set " )
73
59
}
74
60
75
61
// ListSecrets retrieves all secrets from the vault.
76
62
func ListSecrets (c echo.Context ) error {
77
- secrets := make ([]secret , 0 )
63
+ secrets := make ([]addSecret , 0 )
78
64
cert , err := security .InitCA ()
79
65
if err != nil {
80
66
return c .String (http .StatusInternalServerError , err .Error ())
@@ -89,7 +75,7 @@ func ListSecrets(c echo.Context) error {
89
75
}
90
76
kvs := v .GetAll ()
91
77
for _ , k := range kvs {
92
- s := secret {Key : k , Value : "**********" }
78
+ s := addSecret {Key : k , Value : "**********" }
93
79
secrets = append (secrets , s )
94
80
}
95
81
return c .JSON (http .StatusOK , secrets )
0 commit comments