/// <summary> /// Serializes the <paramref name="userData"/> for the given <paramref name="loginID"/> into the <see cref="UserDataCache"/>. /// </summary> /// <param name="loginID">Login ID of associated <see cref="UserData"/> to retrieve.</param> /// <param name="userData">Reference to <see cref="UserData"/> object to serialize into <see cref="UserDataCache"/>.</param> /// <remarks> /// <para> /// This will add an entry into the user data cache for <paramref name="loginID"/> if it doesn't exist; /// otherwise existing entry will be updated. /// </para> /// <para> /// Updates are automatically queued up for serialization so user does not need to call <see cref="Save"/>. /// </para> /// </remarks> public void SaveUserData(string loginID, UserData userData) { string hash = HashLoginID(loginID); // We wait until the cache is loaded before attempting to access it WaitForDataReady(); // Wait for thread level lock on user data table lock (m_userDataTableLock) { // Assign new user information to user data table m_userDataTable[hash] = userData; } // Queue up a serialization for this new user information Save(); }
/// <summary> /// Initializes a new instance of the security provider. /// </summary> /// <param name="username">Name that uniquely identifies the user.</param> /// <param name="canRefreshData">true if the security provider can refresh <see cref="UserData"/> from the backend datastore, otherwise false.</param> /// <param name="canUpdateData">true if the security provider can update <see cref="UserData"/> in the backend datastore, otherwise false.</param> /// <param name="canResetPassword">true if the security provider can reset user password, otherwise false.</param> /// <param name="canChangePassword">true if the security provider can change user password, otherwise false.</param> protected SecurityProviderBase(string username, bool canRefreshData, bool canUpdateData, bool canResetPassword, bool canChangePassword) { // Initialize member variables. m_userData = new UserData(username); m_canRefreshData = canRefreshData; m_canUpdateData = canUpdateData; m_canResetPassword = canResetPassword; m_canChangePassword = canChangePassword; m_applicationName = DefaultApplicationName; m_connectionString = DefaultConnectionString; m_persistSettings = DefaultPersistSettings; m_settingsCategory = DefaultSettingsCategory; }
/// <summary> /// Attempts to retrieve <see cref="UserData"/> for given <paramref name="loginID"/>. /// </summary> /// <param name="loginID">Login ID of associated <see cref="UserData"/> to retrieve.</param> /// <param name="userData">Reference to <see cref="UserData"/> object to populate if found.</param> /// <returns><c>true</c> if <see cref="UserData"/> for given <paramref name="loginID"/> was retrieved; otherwise <c>false</c>.</returns> public bool TryGetUserData(string loginID, out UserData userData) { string hash = HashLoginID(loginID); bool result; // We wait until the cache is loaded before attempting to access it WaitForDataReady(); // Wait for thread level lock on user data table lock (m_userDataTableLock) { // Attempt to lookup persisted user data based on hash of login ID result = m_userDataTable.TryGetValue(hash, out userData); } return result; }