]> git.proxmox.com Git - proxmox-backup.git/blob - src/bin/proxmox_backup_manager/openid.rs
tree-wide: fix needless borrows
[proxmox-backup.git] / src / bin / proxmox_backup_manager / openid.rs
1 use anyhow::Error;
2 use serde_json::Value;
3
4 use proxmox_router::{cli::*, ApiHandler, RpcEnvironment};
5 use proxmox_schema::api;
6
7 use pbs_api_types::REALM_ID_SCHEMA;
8
9 use proxmox_backup::api2;
10
11
12 #[api(
13 input: {
14 properties: {
15 "output-format": {
16 schema: OUTPUT_FORMAT,
17 optional: true,
18 },
19 }
20 }
21 )]
22 /// List configured OpenId realms
23 fn list_openid_realms(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result<Value, Error> {
24
25 let output_format = get_output_format(&param);
26
27 let info = &api2::config::access::openid::API_METHOD_LIST_OPENID_REALMS;
28 let mut data = match info.handler {
29 ApiHandler::Sync(handler) => (handler)(param, info, rpcenv)?,
30 _ => unreachable!(),
31 };
32
33 let options = default_table_format_options()
34 .column(ColumnConfig::new("realm"))
35 .column(ColumnConfig::new("issuer-url"))
36 .column(ColumnConfig::new("comment"));
37
38 format_and_print_result_full(&mut data, &info.returns, &output_format, &options);
39
40 Ok(Value::Null)
41 }
42 #[api(
43 input: {
44 properties: {
45 realm: {
46 schema: REALM_ID_SCHEMA,
47 },
48 "output-format": {
49 schema: OUTPUT_FORMAT,
50 optional: true,
51 },
52 }
53 }
54 )]
55
56 /// Show OpenID realm configuration
57 fn show_openid_realm(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result<Value, Error> {
58
59 let output_format = get_output_format(&param);
60
61 let info = &api2::config::access::openid::API_METHOD_READ_OPENID_REALM;
62 let mut data = match info.handler {
63 ApiHandler::Sync(handler) => (handler)(param, info, rpcenv)?,
64 _ => unreachable!(),
65 };
66
67 let options = default_table_format_options();
68 format_and_print_result_full(&mut data, &info.returns, &output_format, &options);
69
70 Ok(Value::Null)
71 }
72
73 pub fn openid_commands() -> CommandLineInterface {
74
75 let cmd_def = CliCommandMap::new()
76 .insert("list", CliCommand::new(&API_METHOD_LIST_OPENID_REALMS))
77 .insert("show", CliCommand::new(&API_METHOD_SHOW_OPENID_REALM)
78 .arg_param(&["realm"])
79 .completion_cb("realm", pbs_config::domains::complete_openid_realm_name)
80 )
81 .insert("create",
82 CliCommand::new(&api2::config::access::openid::API_METHOD_CREATE_OPENID_REALM)
83 .arg_param(&["realm"])
84 .arg_param(&["realm"])
85 .completion_cb("realm", pbs_config::domains::complete_openid_realm_name)
86 )
87 .insert("update",
88 CliCommand::new(&api2::config::access::openid::API_METHOD_UPDATE_OPENID_REALM)
89 .arg_param(&["realm"])
90 .arg_param(&["realm"])
91 .completion_cb("realm", pbs_config::domains::complete_openid_realm_name)
92 )
93 .insert("delete",
94 CliCommand::new(&api2::config::access::openid::API_METHOD_DELETE_OPENID_REALM)
95 .arg_param(&["realm"])
96 .arg_param(&["realm"])
97 .completion_cb("realm", pbs_config::domains::complete_openid_realm_name)
98 )
99 ;
100
101 cmd_def.into()
102 }