(data []byte, username, pubKey string)
| 231 | } |
| 232 | |
| 233 | func ensureAdminUserYaml(data []byte, username, pubKey string) (*yaml.Node, bool, error) { |
| 234 | rootNode, targetNode, err := yaml.EnsureDocument(data) |
| 235 | if err != nil { |
| 236 | return nil, false, err |
| 237 | } |
| 238 | |
| 239 | usersNode, _ := targetNode.EnsureKey("users", yaml.NewMappingNode(), nil) |
| 240 | userNode, _ := usersNode.EnsureKey(username, yaml.NewMappingNode(), nil) |
| 241 | keysNode, _ := userNode.EnsureKey("keys", yaml.NewSequenceNode(), nil) |
| 242 | modified := keysNode.AppendUniqueScalar(yaml.NewScalarNode(pubKey, "")) |
| 243 | |
| 244 | // Ensure this user is an admin and isn't disabled |
| 245 | _, adminModified := userNode.EnsureKey("is_admin", yaml.NewScalarNode("true", yaml.ScalarTagBool), nil) |
| 246 | disabledModified := userNode.RemoveKey("disabled") |
| 247 | |
| 248 | return rootNode, modified || disabledModified || adminModified, nil |
| 249 | } |
no test coverage detected