Back to OIM Explorer

QBM.CompositionApi/QBM.CompositionApi.Password/PasswordItemCollector.cs

Decompiler Source FileQBM.CompositionApi.PasswordItemCollectorDecompiled Source

2 extracted method/event/call references in PasswordItemCollector.

Source: F:\Claude\.tmp\oim-decompiled-full\0969_One_Identity_Manager_QBM.CompositionApi.dll\QBM.CompositionApi.Password\PasswordItemCollector.cs

Source size: 33.016 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • CallFunctionAsync: GetPwdPolicyUid at line 298
  • CallFunctionAsync: GetPwdPolicyUid at line 645

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

  • No direct source references extracted.

C# source-derived context

Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.

writes entity values references DB/Dialog objects

Summary: classes PasswordItemCollector, _003C_003Ec__DisplayClass9_0; methods _003CGetPasswordItemsAsync_003Eb__5, _003CGetPasswordItemsAsync_003Eb__1, _003CGetPasswordItemsAsync_003Eb__2, MoveNext, SetStateMachine, GetPasswordItemsAsync; references Person; markers writes entity values, references DB/Dialog objects

Classes

PasswordItemCollector _003C_003Ec__DisplayClass9_0

DB/Dialog object references

OIM key/entity markers

None extracted.

API/entity calls

PutValue CreateInteractiveAsync CallFunctionAsync From

Registrations / handlers

None extracted.

Complete Source

C#649 lines
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Diagnostics;5using System.Linq;6using System.Runtime.CompilerServices;7using System.Runtime.InteropServices;8using System.Security;9using System.Threading;10using System.Threading.Tasks;11using NLog;12using QBM.CompositionApi.PlugIns;13using VI.Base;14using VI.DB;15using VI.DB.Entities;16using VI.DB.Passwords;17using VI.DB.Scripting;18using VI.DB.Sync;1920namespace QBM.CompositionApi.Password;2122/// <summary>23/// Returns the list of password items defined for the current user.24/// </summary>25public class PasswordItemCollector26{27	[CompilerGenerated]28	private sealed class _003C_003Ec__DisplayClass9_029	{30		public PasswordItemCollector _003C_003E4__this;3132		public CancellationToken ct;3334		public ScriptRunner runner;3536		public string uidPerson;3738		internal System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<IPasswordItem>> _003CGetPasswordItemsAsync_003Eb__5(IPasswordItemProvider v)39		{40			//IL_003d: Unknown result type (might be due to invalid IL or missing references)41			//IL_0025: Unknown result type (might be due to invalid IL or missing references)42			if (_003C_003E4__this.UidPerson != null)43			{44				return v.GetPasswordItemsAsync(_003C_003E4__this._session, _003C_003E4__this.UidPerson, ct);45			}46			return v.GetPasswordItemsAsync(_003C_003E4__this._session, ct);47		}4849		internal bool _003CGetPasswordItemsAsync_003Eb__1(IPasswordItem i)50		{51			bool flag = (bool)runner.Eval("QER_PasswordWeb_IsAllowSet", uidPerson, i.Key, i.ColumnName);52			Logger logger = Logger;53			global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);54			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = uidPerson;55			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;56			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;57			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;58			logger.Debug("Allow set password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));59			return flag;60		}6162		internal IPasswordItem _003CGetPasswordItemsAsync_003Eb__2(IPasswordItem i)63		{64			if (!i.IsCentralPassword)65			{66				bool flag = (bool)runner.Eval("QER_PasswordWeb_IsByCentralPwd", uidPerson, i.Key, i.ColumnName);67				Logger logger = Logger;68				global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);69				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = uidPerson;70				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;71				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;72				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;73				logger.Debug("Is managed by central password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));74				if (flag)75				{76					i = new CentralPwdWrapper(i);77				}78			}79			return i;80		}81	}8283	[StructLayout((LayoutKind)3)]84	[CompilerGenerated]85	private struct _003CGetPasswordItemsAsync_003Ed__9 : IAsyncStateMachine86	{87		public int _003C_003E1__state;8889		public AsyncTaskMethodBuilder<System.Collections.Generic.IEnumerable<IPasswordItem>> _003C_003Et__builder;9091		public PasswordItemCollector _003C_003E4__this;9293		public CancellationToken ct;9495		private _003C_003Ec__DisplayClass9_0 _003C_003E8__1;9697		private ConfiguredTaskAwaiter<System.Collections.Generic.IEnumerable<IPasswordItem>[]> _003C_003Eu__1;9899		private void MoveNext()100		{101			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)102			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)103			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)104			//IL_0037: Unknown result type (might be due to invalid IL or missing references)105			//IL_003c: Unknown result type (might be due to invalid IL or missing references)106			//IL_0068: Unknown result type (might be due to invalid IL or missing references)107			//IL_006d: Unknown result type (might be due to invalid IL or missing references)108			//IL_0071: Unknown result type (might be due to invalid IL or missing references)109			//IL_0076: Unknown result type (might be due to invalid IL or missing references)110			//IL_008b: Unknown result type (might be due to invalid IL or missing references)111			//IL_008d: Unknown result type (might be due to invalid IL or missing references)112			int num = _003C_003E1__state;113			PasswordItemCollector passwordItemCollector = _003C_003E4__this;114			System.Collections.Generic.IEnumerable<IPasswordItem> result2;115			try116			{117				ConfiguredTaskAwaiter<System.Collections.Generic.IEnumerable<IPasswordItem>[]> val;118				if (num != 0)119				{120					_003C_003E8__1 = new _003C_003Ec__DisplayClass9_0();121					_003C_003E8__1._003C_003E4__this = _003C_003E4__this;122					_003C_003E8__1.ct = ct;123					val = System.Threading.Tasks.Task.WhenAll<System.Collections.Generic.IEnumerable<IPasswordItem>>((System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<IPasswordItem>>>)(from v in passwordItemCollector._plugins.Get<IPasswordItemProvider>()124						select (_003C_003E8__1._003C_003E4__this.UidPerson != null) ? v.GetPasswordItemsAsync(_003C_003E8__1._003C_003E4__this._session, _003C_003E8__1._003C_003E4__this.UidPerson, _003C_003E8__1.ct) : v.GetPasswordItemsAsync(_003C_003E8__1._003C_003E4__this._session, _003C_003E8__1.ct))).ConfigureAwait(false).GetAwaiter();125					if (!val.IsCompleted)126					{127						num = (_003C_003E1__state = 0);128						_003C_003Eu__1 = val;129						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<System.Collections.Generic.IEnumerable<IPasswordItem>[]>, _003CGetPasswordItemsAsync_003Ed__9>(ref val, ref this);130						return;131					}132				}133				else134				{135					val = _003C_003Eu__1;136					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<System.Collections.Generic.IEnumerable<IPasswordItem>[]>);137					num = (_003C_003E1__state = -1);138				}139				System.Collections.Generic.IEnumerable<IPasswordItem>[] result = val.GetResult();140				_003C_003E8__1.runner = new ScriptRunner(passwordItemCollector._session.Scripts().GetScriptClass(ScriptContext.Scripts), passwordItemCollector._session);141				_003C_003E8__1.uidPerson = passwordItemCollector.UidPerson ?? passwordItemCollector._session.User().Uid;142				IPasswordItem[] array = Enumerable.ToArray<IPasswordItem>(Enumerable.Select<IPasswordItem, IPasswordItem>(Enumerable.Where<IPasswordItem>(Enumerable.SelectMany<System.Collections.Generic.IEnumerable<IPasswordItem>, IPasswordItem>((System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<IPasswordItem>>)result, (Func<System.Collections.Generic.IEnumerable<IPasswordItem>, System.Collections.Generic.IEnumerable<IPasswordItem>>)((System.Collections.Generic.IEnumerable<IPasswordItem> i) => i)), (Func<IPasswordItem, bool>)delegate(IPasswordItem i)143				{144					bool flag = (bool)_003C_003E8__1.runner.Eval("QER_PasswordWeb_IsAllowSet", _003C_003E8__1.uidPerson, i.Key, i.ColumnName);145					Logger logger = Logger;146					global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);147					global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = _003C_003E8__1.uidPerson;148					global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;149					global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;150					global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;151					logger.Debug("Allow set password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));152					return flag;153				}), (Func<IPasswordItem, IPasswordItem>)delegate(IPasswordItem i)154				{155					if (!i.IsCentralPassword)156					{157						bool flag = (bool)_003C_003E8__1.runner.Eval("QER_PasswordWeb_IsByCentralPwd", _003C_003E8__1.uidPerson, i.Key, i.ColumnName);158						Logger logger = Logger;159						global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);160						global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = _003C_003E8__1.uidPerson;161						global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;162						global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;163						global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;164						logger.Debug("Is managed by central password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));165						if (flag)166						{167							i = new CentralPwdWrapper(i);168						}169					}170					return i;171				}));172				if (!Enumerable.Any<IPasswordItem>((System.Collections.Generic.IEnumerable<IPasswordItem>)array, (Func<IPasswordItem, bool>)((IPasswordItem r) => r.IsManagedCentrally)))173				{174					Logger.Debug("No password is centrally managed -> not showing central password.");175					array = Enumerable.ToArray<IPasswordItem>(Enumerable.Where<IPasswordItem>((System.Collections.Generic.IEnumerable<IPasswordItem>)array, (Func<IPasswordItem, bool>)((IPasswordItem r) => !r.IsCentralPassword)));176				}177				result2 = array;178			}179			catch (System.Exception exception)180			{181				_003C_003E1__state = -2;182				_003C_003E8__1 = null;183				_003C_003Et__builder.SetException(exception);184				return;185			}186			_003C_003E1__state = -2;187			_003C_003E8__1 = null;188			_003C_003Et__builder.SetResult(result2);189		}190191		[DebuggerHidden]192		private void SetStateMachine(IAsyncStateMachine stateMachine)193		{194			_003C_003Et__builder.SetStateMachine(stateMachine);195		}196	}197198	[StructLayout((LayoutKind)3)]199	[CompilerGenerated]200	private struct _003CGetPolicyAsync_003Ed__11 : IAsyncStateMachine201	{202		public int _003C_003E1__state;203204		public AsyncTaskMethodBuilder<PasswordPolicy> _003C_003Et__builder;205206		public ISession session;207208		public IEntity entity;209210		public CancellationToken ct;211212		public string columnName;213214		private IPasswordManager _003CpwdManager_003E5__2;215216		private ConfiguredTaskAwaiter<IEntity> _003C_003Eu__1;217218		private ConfiguredValueTaskAwaiter<object> _003C_003Eu__2;219220		private ConfiguredTaskAwaiter<PasswordPolicy> _003C_003Eu__3;221222		private void MoveNext()223		{224			//IL_0090: Unknown result type (might be due to invalid IL or missing references)225			//IL_0095: Unknown result type (might be due to invalid IL or missing references)226			//IL_009d: Unknown result type (might be due to invalid IL or missing references)227			//IL_011b: Unknown result type (might be due to invalid IL or missing references)228			//IL_0120: Unknown result type (might be due to invalid IL or missing references)229			//IL_0128: Unknown result type (might be due to invalid IL or missing references)230			//IL_019e: Unknown result type (might be due to invalid IL or missing references)231			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)232			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)233			//IL_0158: Unknown result type (might be due to invalid IL or missing references)234			//IL_0163: Unknown result type (might be due to invalid IL or missing references)235			//IL_0168: Unknown result type (might be due to invalid IL or missing references)236			//IL_016c: Unknown result type (might be due to invalid IL or missing references)237			//IL_0171: Unknown result type (might be due to invalid IL or missing references)238			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)239			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)240			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)241			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)242			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)243			//IL_0047: Unknown result type (might be due to invalid IL or missing references)244			//IL_0052: Unknown result type (might be due to invalid IL or missing references)245			//IL_0057: Unknown result type (might be due to invalid IL or missing references)246			//IL_005b: Unknown result type (might be due to invalid IL or missing references)247			//IL_0060: Unknown result type (might be due to invalid IL or missing references)248			//IL_0186: Unknown result type (might be due to invalid IL or missing references)249			//IL_0188: Unknown result type (might be due to invalid IL or missing references)250			//IL_0100: Unknown result type (might be due to invalid IL or missing references)251			//IL_0102: Unknown result type (might be due to invalid IL or missing references)252			//IL_0075: Unknown result type (might be due to invalid IL or missing references)253			//IL_0077: Unknown result type (might be due to invalid IL or missing references)254			int num = _003C_003E1__state;255			PasswordPolicy result2;256			try257			{258				ConfiguredTaskAwaiter<IEntity> val3;259				ConfiguredValueTaskAwaiter<object> val2;260				ConfiguredTaskAwaiter<PasswordPolicy> val;261				string uidPasswordPolicy;262				IEntity result;263				switch (num)264				{265				default:266					_003CpwdManager_003E5__2 = session.Resolve<IPasswordManager>();267					if (!entity.IsInteractive)268					{269						val3 = entity.CreateInteractiveAsync(session, ct).ConfigureAwait(false).GetAwaiter();270						if (!val3.IsCompleted)271						{272							num = (_003C_003E1__state = 0);273							_003C_003Eu__1 = val3;274							_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<IEntity>, _003CGetPolicyAsync_003Ed__11>(ref val3, ref this);275							return;276						}277						goto IL_00ac;278					}279					goto IL_00bb;280				case 0:281					val3 = _003C_003Eu__1;282					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<IEntity>);283					num = (_003C_003E1__state = -1);284					goto IL_00ac;285				case 1:286					val2 = _003C_003Eu__2;287					_003C_003Eu__2 = default(ConfiguredValueTaskAwaiter<object>);288					num = (_003C_003E1__state = -1);289					goto IL_0137;290				case 2:291					{292						val = _003C_003Eu__3;293						_003C_003Eu__3 = default(ConfiguredTaskAwaiter<PasswordPolicy>);294						num = (_003C_003E1__state = -1);295						break;296					}297					IL_00bb:298					val2 = entity.CallFunctionAsync("GetPwdPolicyUid", columnName, p2: true, ct).ConfigureAwait(false).GetAwaiter();299					if (!val2.IsCompleted)300					{301						num = (_003C_003E1__state = 1);302						_003C_003Eu__2 = val2;303						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredValueTaskAwaiter<object>, _003CGetPolicyAsync_003Ed__11>(ref val2, ref this);304						return;305					}306					goto IL_0137;307					IL_0137:308					uidPasswordPolicy = (string)val2.GetResult();309					val = _003CpwdManager_003E5__2.GetPolicyAsync(uidPasswordPolicy, entity, columnName, ct).ConfigureAwait(false).GetAwaiter();310					if (!val.IsCompleted)311					{312						num = (_003C_003E1__state = 2);313						_003C_003Eu__3 = val;314						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<PasswordPolicy>, _003CGetPolicyAsync_003Ed__11>(ref val, ref this);315						return;316					}317					break;318					IL_00ac:319					result = val3.GetResult();320					entity = result;321					goto IL_00bb;322				}323				result2 = val.GetResult();324			}325			catch (System.Exception exception)326			{327				_003C_003E1__state = -2;328				_003CpwdManager_003E5__2 = null;329				_003C_003Et__builder.SetException(exception);330				return;331			}332			_003C_003E1__state = -2;333			_003CpwdManager_003E5__2 = null;334			_003C_003Et__builder.SetResult(result2);335		}336337		[DebuggerHidden]338		private void SetStateMachine(IAsyncStateMachine stateMachine)339		{340			_003C_003Et__builder.SetStateMachine(stateMachine);341		}342	}343344	[StructLayout((LayoutKind)3)]345	[CompilerGenerated]346	private struct _003CSetPasswordsAsync_003Ed__10 : IAsyncStateMachine347	{348		public int _003C_003E1__state;349350		public AsyncTaskMethodBuilder _003C_003Et__builder;351352		public PasswordItemCollector _003C_003E4__this;353354		public System.Collections.Generic.IEnumerable<IPasswordItem> passwordItems;355356		public SecureString newPassword;357358		public CancellationToken ct;359360		private IUnitOfWork _003Cu_003E5__2;361362		private System.Collections.Generic.IEnumerator<IPasswordItem> _003C_003E7__wrap2;363364		private IPasswordItem _003Cp_003E5__4;365366		private string _003Cinsecure_003E5__5;367368		private ConfiguredTaskAwaiter<IEntity> _003C_003Eu__1;369370		private ConfiguredTaskAwaiter _003C_003Eu__2;371372		private void MoveNext()373		{374			//IL_0225: Unknown result type (might be due to invalid IL or missing references)375			//IL_022a: Unknown result type (might be due to invalid IL or missing references)376			//IL_0232: Unknown result type (might be due to invalid IL or missing references)377			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)378			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)379			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)380			//IL_012d: Unknown result type (might be due to invalid IL or missing references)381			//IL_0138: Unknown result type (might be due to invalid IL or missing references)382			//IL_013d: Unknown result type (might be due to invalid IL or missing references)383			//IL_0141: Unknown result type (might be due to invalid IL or missing references)384			//IL_0146: Unknown result type (might be due to invalid IL or missing references)385			//IL_0176: Unknown result type (might be due to invalid IL or missing references)386			//IL_017b: Unknown result type (might be due to invalid IL or missing references)387			//IL_0183: Unknown result type (might be due to invalid IL or missing references)388			//IL_015b: Unknown result type (might be due to invalid IL or missing references)389			//IL_015d: Unknown result type (might be due to invalid IL or missing references)390			//IL_009f: Unknown result type (might be due to invalid IL or missing references)391			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)392			//IL_00af: Unknown result type (might be due to invalid IL or missing references)393			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)394			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)395			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)396			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)397			//IL_01df: Unknown result type (might be due to invalid IL or missing references)398			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)399			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)400			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)401			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)402			//IL_020d: Unknown result type (might be due to invalid IL or missing references)403			//IL_020f: Unknown result type (might be due to invalid IL or missing references)404			int num = _003C_003E1__state;405			PasswordItemCollector passwordItemCollector = _003C_003E4__this;406			try407			{408				if ((uint)num > 2u)409				{410					_003Cu_003E5__2 = passwordItemCollector._session.StartUnitOfWork();411				}412				try413				{414					ConfiguredTaskAwaiter val;415					if ((uint)num > 1u)416					{417						if (num == 2)418						{419							val = _003C_003Eu__2;420							_003C_003Eu__2 = default(ConfiguredTaskAwaiter);421							num = (_003C_003E1__state = -1);422							goto IL_0241;423						}424						_003C_003E7__wrap2 = passwordItems.GetEnumerator();425					}426					ConfiguredTaskAwaitable val3;427					try428					{429						if (num != 0)430						{431							if (num != 1)432							{433								goto IL_01a7;434							}435							val = _003C_003Eu__2;436							_003C_003Eu__2 = default(ConfiguredTaskAwaiter);437							num = (_003C_003E1__state = -1);438							goto IL_0192;439						}440						ConfiguredTaskAwaiter<IEntity> val2 = _003C_003Eu__1;441						_003C_003Eu__1 = default(ConfiguredTaskAwaiter<IEntity>);442						num = (_003C_003E1__state = -1);443						goto IL_0104;444						IL_0192:445						((ConfiguredTaskAwaiter)(ref val)).GetResult();446						_003Cinsecure_003E5__5 = null;447						_003Cp_003E5__4 = null;448						goto IL_01a7;449						IL_01a7:450						if (((System.Collections.IEnumerator)_003C_003E7__wrap2).MoveNext())451						{452							_003Cp_003E5__4 = _003C_003E7__wrap2.Current;453							_003Cinsecure_003E5__5 = newPassword.ToInsecure();454							Query query = Query.From(new DbObjectKey(_003Cp_003E5__4.Key)).SelectNonLobs();455							val2 = passwordItemCollector._session.Source().GetAsync(query, EntityLoadType.DelayedLogic, ct).ConfigureAwait(false)456								.GetAwaiter();457							if (!val2.IsCompleted)458							{459								num = (_003C_003E1__state = 0);460								_003C_003Eu__1 = val2;461								((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<IEntity>, _003CSetPasswordsAsync_003Ed__10>(ref val2, ref this);462								return;463							}464							goto IL_0104;465						}466						goto end_IL_0042;467						IL_0104:468						IEntity result = val2.GetResult();469						result.PutValue(_003Cp_003E5__4.ColumnName, _003Cinsecure_003E5__5);470						val3 = _003Cu_003E5__2.PutAsync(result, null, ct).ConfigureAwait(false);471						val = ((ConfiguredTaskAwaitable)(ref val3)).GetAwaiter();472						if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)473						{474							num = (_003C_003E1__state = 1);475							_003C_003Eu__2 = val;476							((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003CSetPasswordsAsync_003Ed__10>(ref val, ref this);477							return;478						}479						goto IL_0192;480						end_IL_0042:;481					}482					finally483					{484						if (num < 0 && _003C_003E7__wrap2 != null)485						{486							((System.IDisposable)_003C_003E7__wrap2).Dispose();487						}488					}489					_003C_003E7__wrap2 = null;490					val3 = _003Cu_003E5__2.CommitAsync(ct).ConfigureAwait(false);491					val = ((ConfiguredTaskAwaitable)(ref val3)).GetAwaiter();492					if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)493					{494						num = (_003C_003E1__state = 2);495						_003C_003Eu__2 = val;496						((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003CSetPasswordsAsync_003Ed__10>(ref val, ref this);497						return;498					}499					goto IL_0241;500					IL_0241:501					((ConfiguredTaskAwaiter)(ref val)).GetResult();502				}503				finally504				{505					if (num < 0 && _003Cu_003E5__2 != null)506					{507						((System.IDisposable)_003Cu_003E5__2).Dispose();508					}509				}510				_003Cu_003E5__2 = null;511			}512			catch (System.Exception exception)513			{514				_003C_003E1__state = -2;515				((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetException(exception);516				return;517			}518			_003C_003E1__state = -2;519			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetResult();520		}521522		[DebuggerHidden]523		private void SetStateMachine(IAsyncStateMachine stateMachine)524		{525			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetStateMachine(stateMachine);526		}527	}528529	private readonly IPluginService _plugins;530531	private readonly ISession _session;532533	private static readonly Logger Logger = LogManager.GetLogger("WebLog");534535	[field: CompilerGenerated]536	public string UidPerson537	{538		[CompilerGenerated]539		get;540		[CompilerGenerated]541		set;542	}543544	public PasswordItemCollector(ISession session)545		: this(session, PluginConfiguration.Default)546	{547	}548549	public PasswordItemCollector(ISession session, IPluginService plugins)550	{551		_session = session;552		_plugins = plugins;553	}554555	/// <summary>556	/// Returns the list of password items defined for the current user.557	/// </summary>558	/// <remarks><para>To determine the password items, the <c>IPasswordItemProvider</c> interface is used.</para>559	/// <para>The script <c>QER_PasswordWeb_IsAllowSet</c> is called to determine whether a specific password should560	/// be exposed.</para>561	/// <para>The script <c>QER_PasswordWeb_IsByCentralPwd</c> is called to determine whether a specific password is562	/// managed by the central password.</para></remarks>563	[AsyncStateMachine(typeof(_003CGetPasswordItemsAsync_003Ed__9))]564	public async System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<IPasswordItem>> GetPasswordItemsAsync(CancellationToken ct = default(CancellationToken))565	{566		//IL_0002: Unknown result type (might be due to invalid IL or missing references)567		//IL_0007: Unknown result type (might be due to invalid IL or missing references)568		//IL_0016: Unknown result type (might be due to invalid IL or missing references)569		//IL_0017: Unknown result type (might be due to invalid IL or missing references)570		System.Collections.Generic.IEnumerable<IPasswordItem>[] obj = await System.Threading.Tasks.Task.WhenAll<System.Collections.Generic.IEnumerable<IPasswordItem>>((System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<IPasswordItem>>>)(from v in _plugins.Get<IPasswordItemProvider>()571			select (UidPerson != null) ? v.GetPasswordItemsAsync(_session, UidPerson, ct) : v.GetPasswordItemsAsync(_session, ct))).ConfigureAwait(false);572		ScriptRunner runner = new ScriptRunner(_session.Scripts().GetScriptClass(ScriptContext.Scripts), _session);573		string uidPerson = UidPerson ?? _session.User().Uid;574		IPasswordItem[] array = Enumerable.ToArray<IPasswordItem>(Enumerable.Select<IPasswordItem, IPasswordItem>(Enumerable.Where<IPasswordItem>(Enumerable.SelectMany<System.Collections.Generic.IEnumerable<IPasswordItem>, IPasswordItem>((System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<IPasswordItem>>)obj, (Func<System.Collections.Generic.IEnumerable<IPasswordItem>, System.Collections.Generic.IEnumerable<IPasswordItem>>)((System.Collections.Generic.IEnumerable<IPasswordItem> i) => i)), (Func<IPasswordItem, bool>)delegate(IPasswordItem i)575		{576			bool flag = (bool)runner.Eval("QER_PasswordWeb_IsAllowSet", uidPerson, i.Key, i.ColumnName);577			Logger logger = Logger;578			global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);579			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = uidPerson;580			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;581			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;582			global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;583			logger.Debug("Allow set password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));584			return flag;585		}), (Func<IPasswordItem, IPasswordItem>)delegate(IPasswordItem i)586		{587			if (!i.IsCentralPassword)588			{589				bool flag = (bool)runner.Eval("QER_PasswordWeb_IsByCentralPwd", uidPerson, i.Key, i.ColumnName);590				Logger logger = Logger;591				global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);592				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = uidPerson;593				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = i.Key;594				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = i.ColumnName;595				global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = flag;596				logger.Debug("Is managed by central password: {0} {1} {2} => {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));597				if (flag)598				{599					i = new CentralPwdWrapper(i);600				}601			}602			return i;603		}));604		if (!Enumerable.Any<IPasswordItem>((System.Collections.Generic.IEnumerable<IPasswordItem>)array, (Func<IPasswordItem, bool>)((IPasswordItem r) => r.IsManagedCentrally)))605		{606			Logger.Debug("No password is centrally managed -> not showing central password.");607			array = Enumerable.ToArray<IPasswordItem>(Enumerable.Where<IPasswordItem>((System.Collections.Generic.IEnumerable<IPasswordItem>)array, (Func<IPasswordItem, bool>)((IPasswordItem r) => !r.IsCentralPassword)));608		}609		return array;610	}611612	/// <summary>613	/// Sets a new password for the list of target items, and saves the changes to the database.614	/// </summary>615	[AsyncStateMachine(typeof(_003CSetPasswordsAsync_003Ed__10))]616	public System.Threading.Tasks.Task SetPasswordsAsync(System.Collections.Generic.IEnumerable<IPasswordItem> passwordItems, SecureString newPassword, CancellationToken ct = default(CancellationToken))617	{618		//IL_0002: Unknown result type (might be due to invalid IL or missing references)619		//IL_0007: Unknown result type (might be due to invalid IL or missing references)620		//IL_0026: Unknown result type (might be due to invalid IL or missing references)621		//IL_0027: Unknown result type (might be due to invalid IL or missing references)622		_003CSetPasswordsAsync_003Ed__10 _003CSetPasswordsAsync_003Ed__ = default(_003CSetPasswordsAsync_003Ed__10);623		_003CSetPasswordsAsync_003Ed__._003C_003Et__builder = AsyncTaskMethodBuilder.Create();624		_003CSetPasswordsAsync_003Ed__._003C_003E4__this = this;625		_003CSetPasswordsAsync_003Ed__.passwordItems = passwordItems;626		_003CSetPasswordsAsync_003Ed__.newPassword = newPassword;627		_003CSetPasswordsAsync_003Ed__.ct = ct;628		_003CSetPasswordsAsync_003Ed__._003C_003E1__state = -1;629		((AsyncTaskMethodBuilder)(ref _003CSetPasswordsAsync_003Ed__._003C_003Et__builder)).Start<_003CSetPasswordsAsync_003Ed__10>(ref _003CSetPasswordsAsync_003Ed__);630		return ((AsyncTaskMethodBuilder)(ref _003CSetPasswordsAsync_003Ed__._003C_003Et__builder)).Task;631	}632633	[AsyncStateMachine(typeof(_003CGetPolicyAsync_003Ed__11))]634	public static async System.Threading.Tasks.Task<PasswordPolicy> GetPolicyAsync(ISession session, IEntity entity, string columnName, CancellationToken ct = default(CancellationToken))635	{636		//IL_0002: Unknown result type (might be due to invalid IL or missing references)637		//IL_0007: Unknown result type (might be due to invalid IL or missing references)638		//IL_0026: Unknown result type (might be due to invalid IL or missing references)639		//IL_0027: Unknown result type (might be due to invalid IL or missing references)640		IPasswordManager pwdManager = session.Resolve<IPasswordManager>();641		if (!entity.IsInteractive)642		{643			entity = await entity.CreateInteractiveAsync(session, ct).ConfigureAwait(false);644		}645		string uidPasswordPolicy = (string)(await entity.CallFunctionAsync("GetPwdPolicyUid", columnName, p2: true, ct).ConfigureAwait(false));646		return await pwdManager.GetPolicyAsync(uidPasswordPolicy, entity, columnName, ct).ConfigureAwait(false);647	}648}649