Factors/ResetOktaUserFactor.cs
using System.Management.Automation;
using Okta.Core.Models; namespace Okta.Core.Automation { [Cmdlet(VerbsCommon.Reset, "OktaUserFactor")] public class ResetOktaUserFactor : OktaCmdlet { [Parameter( Mandatory = true, ValueFromPipelineByPropertyName = true, Position = 0, HelpMessage = "Id or username of the Okta user" )] public string IdOrLogin { get; set; } [Parameter( Mandatory = false, ValueFromPipelineByPropertyName = true, Position = 1, HelpMessage = "Id of the user factor to remove. If empty, removes all user factors" )] public string FactorId { get; set; } protected override void ProcessRecord() { var usersClient = Client.GetUsersClient(); User user = usersClient.Get(IdOrLogin); if (user == null) user = usersClient.GetByUsername(IdOrLogin); if (user != null) { var userFactorsClient = usersClient.GetUserFactorsClient(user); Factor userFactor = null; if (!string.IsNullOrEmpty(FactorId)) { userFactor = userFactorsClient.GetFactor(FactorId); if (userFactor != null) { try { userFactorsClient.Reset(userFactor); WriteObject($"The factor was successfully removed for user {IdOrLogin}."); } catch (OktaException oex) { ErrorRecord er = new ErrorRecord(oex, oex.ErrorId, ErrorCategory.NotSpecified, userFactorsClient); ErrorDetails errorDetails = new ErrorDetails($"Could not remove factor {FactorId} for user {IdOrLogin}: {oex.ErrorSummary}."); er.ErrorDetails = errorDetails; WriteError(er); } WriteObject(userFactor); } else { WriteWarning("The provided factor type seems to be invalid, please try again."); } } else { WriteInformation("About to delete all user factors...", null); var factors = userFactorsClient.GetList(); foreach(Factor factor in factors.Results) { userFactorsClient.Reset(factor); } } } else { WriteWarning("The provided user id or username seems to be invalid, please try again."); } } } } |