func UpdateKey(c *gin.Context) { var key models.AccessKey oldKey := c.MustGet("accessKey").(models.AccessKey) if err := c.Bind(&key); err != nil { return } switch key.Type { case "aws", "gcloud", "do": break case "ssh": if key.Secret == nil || len(*key.Secret) == 0 { c.JSON(400, map[string]string{ "error": "SSH Secret empty", }) return } default: c.JSON(400, map[string]string{ "error": "Invalid key type", }) return } if key.Secret == nil || len(*key.Secret) == 0 { // override secret key.Secret = oldKey.Secret } if _, err := database.Mysql.Exec("update access_key set name=?, type=?, `key`=?, secret=? where id=?", key.Name, key.Type, key.Key, key.Secret, oldKey.ID); err != nil { panic(err) } desc := "Access Key " + key.Name + " updated" objType := "key" if err := (models.Event{ ProjectID: oldKey.ProjectID, Description: &desc, ObjectID: &oldKey.ID, ObjectType: &objType, }.Insert()); err != nil { panic(err) } c.AbortWithStatus(204) }
func (t *task) installKey(key models.AccessKey) error { t.log("access key " + key.Name + " installed") err := ioutil.WriteFile(key.GetPath(), []byte(*key.Secret), 0600) return err }