You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
402
mcs/class/referencesource/System.Web/Profile/ProfileManager.cs
Normal file
402
mcs/class/referencesource/System.Web/Profile/ProfileManager.cs
Normal file
@@ -0,0 +1,402 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="ProfileManager.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
/*
|
||||
* ProfileManager
|
||||
*
|
||||
* Copyright (c) 2002 Microsoft Corporation
|
||||
*/
|
||||
|
||||
namespace System.Web.Profile
|
||||
{
|
||||
using System.Security.Principal;
|
||||
using System.Security.Permissions;
|
||||
using System.Collections;
|
||||
using System.Collections.Specialized;
|
||||
using System.Web.Configuration;
|
||||
using System.Web.Util;
|
||||
using System.Web.Security;
|
||||
using System.Web.Compilation;
|
||||
using System.Configuration;
|
||||
using System.Configuration.Provider;
|
||||
using System.Reflection;
|
||||
using System.CodeDom;
|
||||
using System.Web.Hosting;
|
||||
|
||||
public static class ProfileManager
|
||||
{
|
||||
private static ProfilePropertySettingsCollection s_dynamicProperties = new ProfilePropertySettingsCollection();
|
||||
internal static ProfilePropertySettingsCollection DynamicProfileProperties {
|
||||
get {
|
||||
return s_dynamicProperties;
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddDynamicProfileProperty(ProfilePropertySettings property) {
|
||||
BuildManager.ThrowIfPreAppStartNotRunning();
|
||||
s_dynamicProperties.Add(property);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static bool DeleteProfile(string username)
|
||||
{
|
||||
SecUtility.CheckParameter( ref username, true, true, true, 0, "username" );
|
||||
return (Provider.DeleteProfiles(new string [] {username}) != 0);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static int DeleteProfiles(ProfileInfoCollection profiles)
|
||||
{
|
||||
if( profiles == null )
|
||||
{
|
||||
throw new ArgumentNullException( "profiles" );
|
||||
}
|
||||
|
||||
if ( profiles.Count < 1 )
|
||||
{
|
||||
throw new ArgumentException(
|
||||
SR.GetString(SR.Parameter_collection_empty,
|
||||
"profiles" ),
|
||||
"profiles" );
|
||||
}
|
||||
|
||||
foreach (ProfileInfo pi in profiles) {
|
||||
string username = pi.UserName;
|
||||
SecUtility.CheckParameter(ref username, true, true, true, 0, "UserName");
|
||||
}
|
||||
return Provider.DeleteProfiles(profiles);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static int DeleteProfiles(string[] usernames)
|
||||
{
|
||||
SecUtility.CheckArrayParameter( ref usernames,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
0,
|
||||
"usernames");
|
||||
|
||||
|
||||
return Provider.DeleteProfiles(usernames);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
|
||||
{
|
||||
return Provider.DeleteInactiveProfiles(authenticationOption, userInactiveSinceDate);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static int GetNumberOfProfiles(ProfileAuthenticationOption authenticationOption)
|
||||
{
|
||||
return Provider.GetNumberOfInactiveProfiles(authenticationOption, DateTime.Now.AddDays(1)); //
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
|
||||
{
|
||||
return Provider.GetNumberOfInactiveProfiles(authenticationOption, userInactiveSinceDate);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption)
|
||||
{
|
||||
int totalRecords;
|
||||
return Provider.GetAllProfiles(authenticationOption, 0, Int32.MaxValue, out totalRecords);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption,
|
||||
int pageIndex,
|
||||
int pageSize,
|
||||
out int totalRecords)
|
||||
{
|
||||
return Provider.GetAllProfiles(authenticationOption, pageIndex, pageSize, out totalRecords);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
|
||||
DateTime userInactiveSinceDate)
|
||||
{
|
||||
int totalRecords;
|
||||
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
|
||||
DateTime userInactiveSinceDate,
|
||||
int pageIndex,
|
||||
int pageSize,
|
||||
out int totalRecords)
|
||||
{
|
||||
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption,
|
||||
string usernameToMatch)
|
||||
{
|
||||
SecUtility.CheckParameter( ref usernameToMatch,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
"usernameToMatch" );
|
||||
|
||||
int totalRecords;
|
||||
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, 0, Int32.MaxValue, out totalRecords);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption,
|
||||
string usernameToMatch,
|
||||
int pageIndex,
|
||||
int pageSize,
|
||||
out int totalRecords)
|
||||
{
|
||||
if ( pageIndex < 0 )
|
||||
{
|
||||
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
|
||||
}
|
||||
|
||||
if ( pageSize < 1 )
|
||||
{
|
||||
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
|
||||
}
|
||||
|
||||
SecUtility.CheckParameter( ref usernameToMatch,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
"usernameToMatch" );
|
||||
|
||||
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, pageIndex, pageSize, out totalRecords);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
|
||||
string usernameToMatch,
|
||||
DateTime userInactiveSinceDate)
|
||||
{
|
||||
SecUtility.CheckParameter( ref usernameToMatch,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
"usernameToMatch" );
|
||||
|
||||
int totalRecords;
|
||||
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
|
||||
string usernameToMatch,
|
||||
DateTime userInactiveSinceDate,
|
||||
int pageIndex,
|
||||
int pageSize,
|
||||
out int totalRecords)
|
||||
{
|
||||
if ( pageIndex < 0 )
|
||||
{
|
||||
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
|
||||
}
|
||||
|
||||
if ( pageSize < 1 )
|
||||
{
|
||||
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
|
||||
}
|
||||
|
||||
SecUtility.CheckParameter( ref usernameToMatch,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
0,
|
||||
"usernameToMatch" );
|
||||
|
||||
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Properties
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static bool Enabled {
|
||||
get {
|
||||
//
|
||||
if (!s_Initialized && !s_InitializedEnabled) {
|
||||
InitializeEnabled(false);
|
||||
}
|
||||
|
||||
return s_Enabled;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static string ApplicationName {
|
||||
get {
|
||||
return Provider.ApplicationName;
|
||||
}
|
||||
set {
|
||||
Provider.ApplicationName = value;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static bool AutomaticSaveEnabled {
|
||||
get {
|
||||
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
|
||||
// WOS #1544130: Don't initialize providers when getting this property, because it is called in ProfileModule.Init
|
||||
InitializeEnabled(false);
|
||||
return s_AutomaticSaveEnabled;
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileProvider Provider {
|
||||
get {
|
||||
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
|
||||
Initialize(true);
|
||||
if (s_Provider == null) {
|
||||
throw new InvalidOperationException(SR.GetString(SR.Profile_default_provider_not_found));
|
||||
}
|
||||
return s_Provider;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
public static ProfileProviderCollection Providers {
|
||||
get {
|
||||
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
|
||||
Initialize(true);
|
||||
return s_Providers;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Private stuff
|
||||
|
||||
private static void InitializeEnabled(bool initProviders) {
|
||||
if (!s_Initialized || !s_InitializedProviders || !s_InitializeDefaultProvider) {
|
||||
lock (s_Lock) {
|
||||
if (!s_Initialized || !s_InitializedProviders || !s_InitializeDefaultProvider) {
|
||||
try {
|
||||
ProfileSection config = MTConfigUtil.GetProfileAppConfig();
|
||||
if (!s_InitializedEnabled) {
|
||||
s_Enabled = config.Enabled && HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low);
|
||||
s_AutomaticSaveEnabled = s_Enabled && config.AutomaticSaveEnabled;
|
||||
s_InitializedEnabled = true;
|
||||
}
|
||||
if (initProviders && s_Enabled && (!s_InitializedProviders || !s_InitializeDefaultProvider)) {
|
||||
InitProviders(config);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
s_InitException = e;
|
||||
}
|
||||
|
||||
s_Initialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void Initialize(bool throwIfNotEnabled)
|
||||
{
|
||||
InitializeEnabled(true);
|
||||
if (s_InitException != null)
|
||||
throw s_InitException;
|
||||
if (throwIfNotEnabled && !s_Enabled)
|
||||
throw new ProviderException(SR.GetString(SR.Profile_not_enabled));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
static private void InitProviders(ProfileSection config)
|
||||
{
|
||||
if (!s_InitializedProviders) {
|
||||
s_Providers = new ProfileProviderCollection();
|
||||
if (config.Providers != null) {
|
||||
ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider));
|
||||
}
|
||||
s_InitializedProviders = true;
|
||||
}
|
||||
|
||||
bool canInitializeDefaultProvider = (!HostingEnvironment.IsHosted || BuildManager.PreStartInitStage == PreStartInitStage.AfterPreStartInit);
|
||||
if (!s_InitializeDefaultProvider && canInitializeDefaultProvider) {
|
||||
s_Providers.SetReadOnly();
|
||||
|
||||
if (config.DefaultProvider == null)
|
||||
throw new ProviderException(SR.GetString(SR.Profile_default_provider_not_specified));
|
||||
|
||||
s_Provider = (ProfileProvider)s_Providers[config.DefaultProvider];
|
||||
if (s_Provider == null)
|
||||
throw new ConfigurationErrorsException(SR.GetString(SR.Profile_default_provider_not_found), config.ElementInformation.Properties["providers"].Source, config.ElementInformation.Properties["providers"].LineNumber);
|
||||
|
||||
s_InitializeDefaultProvider = true;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
private static ProfileProvider s_Provider;
|
||||
private static ProfileProviderCollection s_Providers;
|
||||
private static bool s_Enabled;
|
||||
private static bool s_Initialized;
|
||||
private static bool s_InitializedProviders;
|
||||
private static bool s_InitializeDefaultProvider;
|
||||
private static object s_Lock = new object();
|
||||
private static Exception s_InitException;
|
||||
private static bool s_InitializedEnabled;
|
||||
private static bool s_AutomaticSaveEnabled;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user