user: create default root user as typed struct

we added a userid attribute to the User struct, but missed that we
created the default user without that attribuet via the json! macro
which lead to a runtime panic on the deserialization

by using the struct directly, such errors will be caught by the compiler
in the future

with this change, we can remove the serde_json import here

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2020-05-19 16:24:54 +02:00 committed by Dietmar Maurer
parent 7d4e362993
commit 9c5c383bff

View File

@ -4,7 +4,6 @@ use std::sync::{Arc, RwLock};
use anyhow::{bail, Error};
use lazy_static::lazy_static;
use serde::{Serialize, Deserialize};
use serde_json::json;
use proxmox::api::{
api,
@ -136,9 +135,15 @@ pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> {
let mut data = CONFIG.parse(USER_CFG_FILENAME, &content)?;
if data.sections.get("root@pam").is_none() {
let user: User = serde_json::from_value(json!({
"comment": "Superuser",
})).unwrap();
let user: User = User {
userid: "root@pam".to_string(),
comment: Some("Superuser".to_string()),
enable: None,
expire: None,
firstname: None,
lastname: None,
email: None,
};
data.set_data("root@pam", "user", &user).unwrap();
}