MCPcopy Create free account
hub / github.com/PowerShell/DSC / check_security_context

Function check_security_context

lib/dsc-lib/src/configure/mod.rs:289–331  ·  view source on GitHub ↗
(metadata: Option<&Metadata>, directive_security_context: Option<&SecurityContextKind>)

Source from the content-addressed store, hash-verified

287}
288
289fn check_security_context(metadata: Option<&Metadata>, directive_security_context: Option<&SecurityContextKind>) -> Result<(), DscError> {
290 if metadata.is_none() && directive_security_context.is_none() {
291 return Ok(());
292 }
293
294 let mut security_context_required: Option<&SecurityContextKind> = None;
295 if let Some(metadata) = &metadata
296 && let Some(microsoft_dsc) = &metadata.microsoft
297 && let Some(required_security_context) = &microsoft_dsc.security_context {
298 warn!("{}", t!("configure.mod.securityContextInMetadataDeprecated"));
299 security_context_required = Some(required_security_context);
300 }
301
302 if let Some(directive_security_context) = directive_security_context {
303 if let Some(security_context_required) = security_context_required
304 && security_context_required != directive_security_context {
305 return Err(DscError::SecurityContext(t!(
306 "configure.mod.conflictingSecurityContext",
307 metadata = security_context_required,
308 directive = directive_security_context
309 ).to_string()));
310 }
311 security_context_required = Some(directive_security_context);
312 }
313
314 match security_context_required {
315 Some(SecurityContextKind::Elevated) => {
316 if get_security_context() != SecurityContext::Admin {
317 return Err(DscError::SecurityContext(t!("configure.mod.elevationRequired").to_string()));
318 }
319 },
320 Some(SecurityContextKind::Restricted) => {
321 if get_security_context() != SecurityContext::User {
322 return Err(DscError::SecurityContext(t!("configure.mod.restrictedRequired").to_string()));
323 }
324 },
325 None | Some(SecurityContextKind::Current) => {
326 // no check needed
327 },
328 }
329
330 Ok(())
331}
332
333fn get_metadata_from_result(mut context: Option<&mut Context>, properties: &mut Value, metadata: &mut Metadata, execution_information: &mut ExecutionInformation) -> Result<(), DscError> {
334 if let Some(restart_required) = properties.get("_restartRequired") {

Callers 5

invoke_getMethod · 0.85
invoke_setMethod · 0.85
invoke_testMethod · 0.85
invoke_exportMethod · 0.85
validate_configMethod · 0.85

Calls 2

SecurityContextEnum · 0.85
get_security_contextFunction · 0.85

Tested by

no test coverage detected