Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

864 lines
29 KiB

using System;
using System.Data;
using System.IO;
using System.Security.Principal;
using System.Text;
using System.Web;
using System.Xml.Serialization;
using System.Runtime.InteropServices;
using UDDI.Diagnostics;
namespace UDDI
{
public enum AuthenticationMode : int
{
None = 0,
Uddi = 1,
Windows = 2,
AuthenticatedRead = 4,
Passport = 8,
Both = Uddi | Windows,
WindowsWithAuthenticatedRead = Windows | AuthenticatedRead
}
/// ********************************************************************
/// public enum ContextType
/// --------------------------------------------------------------------
/// <summary>
/// </summary>
/// ********************************************************************
///
public enum ContextType
{
Other = 0,
SOAP = 1,
UserInterface = 2,
Replication = 3
}
//
// Used in replication to determine where the exception came from
//
public enum ExceptionSource
{
Other = 0,
BrokenServiceProjection = 1,
PublisherAssertion = 2
}
/// ********************************************************************
/// public enum RoleType
/// --------------------------------------------------------------------
/// <summary>
/// </summary>
/// ********************************************************************
///
public enum RoleType
{
Anonymous = 0,
User = 1,
Publisher = 2,
Coordinator = 3,
Administrator = 4
}
/// ********************************************************************
/// public class Context
/// --------------------------------------------------------------------
/// <summary>
/// </summary>
/// ********************************************************************
///
public class Context
{
[ThreadStatic]
private static Context context = null;
private ContextType contextType;
private ExceptionSource exceptionSource;
internal UserInfo userInfo;
private Guid contextID;
private int threadID;
private int apiVersionMajor;
private bool logChangeRecords = false;
private DateTime timeStamp;
private string remoteOperator = null;
/// ****************************************************************
/// private Context [constructor]
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
private Context()
{
//
// SECURITY: These member variables are not initialized during construction
//
// apiVersionMajor
// contextType
//
//
// Verify that the operating system is supported.
//
Win32.OsVersionInfoEx osVersion = new Win32.OsVersionInfoEx();
if( !Win32.GetVersionEx( osVersion ) )
{
#if never
throw new UDDIException(
ErrorType.E_fatalError,
"Could not retrieve operating system version." );
#endif
throw new UDDIException( ErrorType.E_fatalError, "UDDI_ERROR_COULD_NOT_RETRIEVE_OPERATING_SYSTEM_VERSION" );
}
if( ( Win32.ProductType.WindowsServer != osVersion.ProductType
&& Win32.ProductType.DomainController != osVersion.ProductType )
|| osVersion.MajorVersion < 5
|| ( 5 == osVersion.MajorVersion && osVersion.MinorVersion < 1 ) )
{
#if never
throw new UDDIException(
ErrorType.E_fatalError,
"Microsoft UDDI Services is not supported on this platform." );
#endif
throw new UDDIException( ErrorType.E_fatalError, "UDDI_ERROR_UNSUPPORTED_PLATFORM" );
}
#if never
contextID = Guid.NewGuid();
threadID = System.Threading.Thread.CurrentThread.GetHashCode();
timeStamp = DateTime.UtcNow;
userInfo = new UserInfo();
#endif
}
/// ****************************************************************
/// public Initialize
/// ----------------------------------------------------------------
/// <summary>
/// Initialize per-request data for the context. This method
/// MUST be called once per request. Multiple calls will
/// re-initialize the contents of the current context.
///
/// </summary>
/// ****************************************************************
public void Initialize()
{
//
// Reset our state. apiVersionMajor is not reset since it will be set in our VersionSupportExtension
//
contextType = ContextType.Other;
exceptionSource = ExceptionSource.Other;
userInfo = new UserInfo();
contextID = Guid.NewGuid();
threadID = System.Threading.Thread.CurrentThread.GetHashCode();
//
// 738148 - To reduce disk usage, make it configurable as to whether we log change records or not.
//
logChangeRecords = Config.GetInt( "LogChangeRecords", 0 ) == 0 ? false : true;
timeStamp = DateTime.UtcNow;
remoteOperator = null;
//
// In our log, we should never ever see multiple calls to this method
// in the same application_request_started/application_request_ended blocks (see global.asax)
// In the event log, correct behaviour is:
// application_request started:
// "Context.Initialize" message
// ... (any number of messages)
// application_request ended
//
Debug.Write( SeverityType.Info,
CategoryType.Soap,
"Context.Initialize" );
}
/// ****************************************************************
/// public Current [static]
/// ----------------------------------------------------------------
/// <summary>
/// Returns the current Context instance. This is either
/// the Context instance that is associated with the
/// current HttpContext, or the instance that is associated with
/// the thread.
/// </summary>
/// ****************************************************************
///
public static Context Current
{
get
{
HttpContext httpContext = HttpContext.Current;
if( null == httpContext )
{
//
// There is no HttpContext, so we must be running within
// the context of an application. In such cases, we
// create a message context for each thread.
//
if( null == context )
{
context = new Context();
//
// Since we are running in an application, we want to initialize each
// instance that we create.
//
context.Initialize();
}
}
else
{
//
// Check to see if the we have seen this HttpContext
// before. If not, we create a new message context and
// mark the HttpContext.
//
if( null == httpContext.Items[ "UddiContext" ] || !( httpContext.Items[ "UddiContext" ] is Context ) )
httpContext.Items.Add( "UddiContext", new Context() );
context = (Context)httpContext.Items[ "UddiContext" ];
}
return context;
}
}
/// ****************************************************************
/// public LogChangeRecords [static]
/// ----------------------------------------------------------------
/// <summary>
/// Specifies whether change records should be generated when
/// updating registry data.
/// </summary>
/// ****************************************************************
///
public static bool LogChangeRecords
{
get { return Current.logChangeRecords; }
set
{
Debug.Verify( User.IsAdministrator, "UDDI_ERROR_FATALERROR_CONTEXT_SETLOGCHANGESNOTADMIN" );
Current.logChangeRecords = value;
}
}
/// ****************************************************************
/// public TimeStamp [static]
/// ----------------------------------------------------------------
/// <summary>
/// Gets or sets the context timestamp.
/// </summary>
/// ****************************************************************
///
//
// TODO: Why not use a field for this instead of a property
//
public static DateTime TimeStamp
{
get { return Current.timeStamp; }
set { Current.timeStamp = value; }
}
/// ****************************************************************
/// public RemoteOperator [static]
/// ----------------------------------------------------------------
/// <summary>
/// Gets or sets the context remote operator.
/// </summary>
/// ****************************************************************
///
//
// TODO: Why not use a field for this instead of a property
//
public static string RemoteOperator
{
get { return Current.remoteOperator; }
set { Current.remoteOperator = value; }
}
/// ****************************************************************
/// public User [static]
/// ----------------------------------------------------------------
/// <summary>
/// Returns the UserInfo associated with the current
/// Context instance.
/// </summary>
/// ****************************************************************
///
//
// TODO: Why not use a field for this instead of a property
//
public static UserInfo User
{
get { return Current.userInfo; }
set { Current.userInfo = value; }
}
/// ****************************************************************
/// public ContextID [static]
/// ----------------------------------------------------------------
/// <summary>
/// Returns the ContextID associated with the current
/// Context instance.
/// </summary>
/// ****************************************************************
///
public static Guid ContextID
{
get { return Current.contextID; }
}
/// ****************************************************************
/// public ThreadID [static]
/// ----------------------------------------------------------------
/// <summary>
/// Returns the ThreadID associated with the current
/// Context instance.
/// </summary>
/// ****************************************************************
///
public static int ThreadID
{
get { return Current.threadID; }
}
/// ****************************************************************
/// public ContextType [static]
/// ----------------------------------------------------------------
/// <summary>
/// Gets/sets the ContextType associated with the current
/// Context instance.
/// </summary>
/// ****************************************************************
///
//
// TODO: Why not use a field for this instead of a property
//
public static UDDI.ContextType ContextType
{
get { return Current.contextType; }
set { Current.contextType = value; }
}
public static UDDI.ExceptionSource ExceptionSource
{
get { return Current.exceptionSource; }
set { Current.exceptionSource = value; }
}
/// ****************************************************************
/// public ApiVersionMajor [static]
/// ----------------------------------------------------------------
/// <summary>
/// Returns the major version number of the request associated
/// with the current Context instance.
/// </summary>
/// ****************************************************************
///
//
// TODO: Why not use a field for this instead of a property
//
public static int ApiVersionMajor
{
get { return Current.apiVersionMajor; }
set { Current.apiVersionMajor = value; }
}
}
/// ********************************************************************
/// public class UserInfo
/// --------------------------------------------------------------------
/// <summary>
/// Stores information about an authenticated publisher.
/// </summary>
/// ********************************************************************
///
//
// SECURITY: Could probably use some SALT to fuzzy up the content
// of this class when serialized as a ticket/token
//
public class UserInfo
{
//
// pInvoke stuff to work with the SID strings
//
[DllImport("ADVAPI32.DLL", EntryPoint="ConvertStringSidToSidW",
SetLastError=true,
CharSet=CharSet.Unicode, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern int ConvertStringSidToSid( string sidStr, out IntPtr psid );
[DllImport("ADVAPI32.DLL", EntryPoint="LookupAccountSidW",
SetLastError=true,
CharSet=CharSet.Unicode, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern int LookupAccountSid( string systemName,
IntPtr psid,
StringBuilder acctName,
out int cbAcctName,
StringBuilder domainName,
out int cbDomainName,
out int sidUse );
[XmlAttribute( "a" )]
public Guid guid = Guid.NewGuid();
[XmlElement( "created", DataType="dateTime" )]
public DateTime created = DateTime.Now;
[XmlAttribute( "Role" )]
public RoleType Role = RoleType.Anonymous;
[XmlAttribute( "ID" )]
public string ID = null;
[XmlAttribute( "Language" )]
public string IsoLangCode = "en";
[XmlIgnore()]
public string ImpersonatorID = null;
[XmlIgnore()]
public string Name = null;
[XmlIgnore()]
public string Email = null;
[XmlIgnore()]
public string Phone = null;
[XmlIgnore()]
public string CompanyName = null;
[XmlIgnore()]
public string AltPhone = null;
[XmlIgnore()]
public string AddressLine1 = null;
[XmlIgnore()]
public string AddressLine2 = null;
[XmlIgnore()]
public string City = null;
[XmlIgnore()]
public string StateProvince = null;
[XmlIgnore()]
public string PostalCode = null;
[XmlIgnore()]
public string Country = null;
[XmlIgnore()]
public bool TrackPassport = true;
[XmlIgnore()]
public bool Verified = false;
[XmlIgnore()]
public int BusinessLimit = 0;
[XmlIgnore()]
public int BusinessCount = 0;
[XmlIgnore()]
public int TModelLimit = 0;
[XmlIgnore()]
public int TModelCount = 0;
[XmlIgnore()]
public int ServiceLimit = 0;
[XmlIgnore()]
public int BindingLimit = 0;
[XmlIgnore()]
public int AssertionLimit = 0;
[XmlIgnore()]
public int AssertionCount = 0;
[XmlIgnore()]
public bool AllowPreassignedKeys = false;
/// ****************************************************************
/// public IsInRole [static]
/// ----------------------------------------------------------------
/// <summary>
/// Checks membership of the windows identity of the current
/// thread in a Windows Group.
/// </summary>
/// ****************************************************************
///
public bool IsInRole( string strSID )
{
WindowsPrincipal prin = new WindowsPrincipal( WindowsIdentity.GetCurrent() );
return IsInRole( strSID, prin );
}
public bool IsInRole( string strSID, IPrincipal principal )
{
return principal.IsInRole( GroupNameFromSid( strSID ) );
}
public string GroupNameFromSid( string strSid )
{
IntPtr psid;
StringBuilder szstrSid = new StringBuilder( strSid );
StringBuilder domainName = new StringBuilder( 1024 );
StringBuilder acctName = new StringBuilder( 1024 );
int cbDomainName = 1024;
int cbAcctName = 1024;
int sidUse = -1;
int iRet = ConvertStringSidToSid( strSid, out psid );
if( 0 == iRet )
{
// throw new UDDIException( ErrorType.E_fatalError, "An attempt to convert a security id to a group name failed. ConvertStringSidToSid failed. " );
throw new UDDIException( ErrorType.E_fatalError, "UDDI_ERROR_SID_CONVERSION_FAILED" );
}
iRet = LookupAccountSid( null, psid, acctName, out cbAcctName, domainName, out cbDomainName, out sidUse );
if( 0 == iRet )
{
//throw new UDDIException( ErrorType.E_fatalError, "An attempt to convert a security id to a group name failed. An attempt to LookupAccountSid failed." );
throw new UDDIException( ErrorType.E_fatalError, "UDDI_ERROR_SID_LOOKUP_FAILED" );
}
return domainName.ToString() + "\\" + acctName.ToString();
}
/// ****************************************************************
/// public IsUser
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public bool IsUser
{
get { return Role >= RoleType.User; }
}
/// ****************************************************************
/// public IsPublisher
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public bool IsPublisher
{
get { return Role >= RoleType.Publisher; }
}
/// ****************************************************************
/// public IsCoordinator
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public bool IsCoordinator
{
get { return Role >= RoleType.Coordinator; }
}
/// ****************************************************************
/// public IsAdministrator
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public bool IsAdministrator
{
get { return Role >= RoleType.Administrator; }
}
/// ****************************************************************
/// public IsImpersonated
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public bool IsImpersonated
{
get
{
return ( null != ImpersonatorID && ID != ImpersonatorID );
}
}
/// ****************************************************************
/// public Register [static]
/// ----------------------------------------------------------------
/// <summary>
/// </summary>
/// ****************************************************************
///
public void Register()
{
Debug.Enter();
//
// If the Name has not been populated during authentication
// use the ID. This is needed to populate the authorizedName
// field.
//
if( null == Name || 0 == Name.Length )
{
Name = ID;
}
SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor( "UI_savePublisher" );
sp.Parameters.Add( "@PUID", SqlDbType.NVarChar, UDDI.Constants.Lengths.UserID );
sp.Parameters.Add( "@isoLangCode", SqlDbType.NVarChar, UDDI.Constants.Lengths.IsoLangCode );
sp.Parameters.Add( "@name", SqlDbType.NVarChar, UDDI.Constants.Lengths.Name );
sp.Parameters.Add( "@email", SqlDbType.NVarChar, UDDI.Constants.Lengths.Email );
sp.Parameters.Add( "@phone", SqlDbType.NVarChar, UDDI.Constants.Lengths.Phone );
sp.Parameters.Add( "@companyName", SqlDbType.NVarChar, UDDI.Constants.Lengths.CompanyName );
sp.Parameters.Add( "@altphone", SqlDbType.NVarChar, UDDI.Constants.Lengths.Phone );
sp.Parameters.Add( "@addressLine1", SqlDbType.NVarChar, UDDI.Constants.Lengths.AddressLine );
sp.Parameters.Add( "@addressLine2", SqlDbType.NVarChar, UDDI.Constants.Lengths.AddressLine );
sp.Parameters.Add( "@city", SqlDbType.NVarChar, UDDI.Constants.Lengths.City );
sp.Parameters.Add( "@stateProvince", SqlDbType.NVarChar, UDDI.Constants.Lengths.StateProvince );
sp.Parameters.Add( "@postalCode", SqlDbType.NVarChar, UDDI.Constants.Lengths.PostalCode );
sp.Parameters.Add( "@country", SqlDbType.NVarChar, UDDI.Constants.Lengths.Country );
sp.Parameters.Add( "@flag", SqlDbType.Int );
sp.Parameters.Add( "@tier", SqlDbType.NVarChar, UDDI.Constants.Lengths.Tier );
sp.Parameters.SetString( "@PUID", ID );
sp.Parameters.SetString( "@isoLangCode", IsoLangCode );
sp.Parameters.SetString( "@name", Name );
sp.Parameters.SetString( "@email", Email );
sp.Parameters.SetString( "@phone", Phone );
sp.Parameters.SetString( "@companyName", CompanyName );
sp.Parameters.SetString( "@altphone", AltPhone );
sp.Parameters.SetString( "@addressLine1", AddressLine1 );
sp.Parameters.SetString( "@addressLine2", AddressLine2 );
sp.Parameters.SetString( "@city", City );
sp.Parameters.SetString( "@stateProvince", StateProvince );
sp.Parameters.SetString( "@postalCode", PostalCode );
sp.Parameters.SetString( "@country", Country );
sp.Parameters.SetString( "@tier", Config.GetString( "Publisher.DefaultTier", "2" ) );
int flag = 0;
//
// TODO: Comments or an enumeration please
//
if( !TrackPassport )
flag = flag | 0x02;
if( Verified )
flag = flag | 0x01;
sp.Parameters.SetInt( "@flag", flag );
sp.ExecuteNonQuery();
Debug.Leave();
}
/// ****************************************************************
/// public IsRegistered
/// ----------------------------------------------------------------
/// <summary>
/// Determines whether the current user is registered as a
/// publisher.
/// </summary>
/// ****************************************************************
///
public bool IsRegistered
{
get
{
Debug.Enter();
SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor( "net_publisher_isRegistered" );
sp.Parameters.Add( "@PUID", SqlDbType.NVarChar, UDDI.Constants.Lengths.UserID );
sp.Parameters.Add( "@returnValue", SqlDbType.Int, ParameterDirection.ReturnValue );
sp.Parameters.SetString( "@PUID", ID );
sp.ExecuteNonQuery();
int returnValue = sp.Parameters.GetInt( "@returnValue" );
Debug.Leave();
return ( 0 == returnValue );
}
}
/// ****************************************************************
/// public IsVerified
/// ----------------------------------------------------------------
/// <summary>
/// Determines whether the current user is registered as a
/// publisher.
/// </summary>
/// ****************************************************************
///
public bool IsVerified
{
get
{
Debug.Enter();
SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor( "net_publisher_isVerified" );
sp.Parameters.Add( "@PUID", SqlDbType.NVarChar, UDDI.Constants.Lengths.UserID );
sp.Parameters.Add( "@returnValue", SqlDbType.Int, ParameterDirection.ReturnValue );
sp.Parameters.SetString( "@PUID", ID );
sp.ExecuteNonQuery();
int returnValue = sp.Parameters.GetInt( "@returnValue" );
Debug.Leave();
return ( 0 == returnValue );
}
}
/// ****************************************************************
/// public Login
/// ----------------------------------------------------------------
/// <summary>
/// Logs the current user in.
/// </summary>
/// ****************************************************************
///
public void Login()
{
Debug.Enter();
SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor( "net_publisher_login" );
sp.Parameters.Add( "@PUID", SqlDbType.NVarChar, UDDI.Constants.Lengths.UserID );
sp.Parameters.Add( "@email", SqlDbType.NVarChar, UDDI.Constants.Lengths.Email, ParameterDirection.InputOutput );
sp.Parameters.Add( "@name", SqlDbType.NVarChar, UDDI.Constants.Lengths.Name, ParameterDirection.Output );
sp.Parameters.Add( "@phone", SqlDbType.VarChar, UDDI.Constants.Lengths.Phone, ParameterDirection.Output );
sp.Parameters.Add( "@companyName", SqlDbType.NVarChar, UDDI.Constants.Lengths.CompanyName, ParameterDirection.Output );
sp.Parameters.Add( "@altPhone", SqlDbType.VarChar, UDDI.Constants.Lengths.Phone, ParameterDirection.Output );
sp.Parameters.Add( "@addressLine1", SqlDbType.NVarChar, UDDI.Constants.Lengths.AddressLine, ParameterDirection.Output );
sp.Parameters.Add( "@addressLine2", SqlDbType.NVarChar, UDDI.Constants.Lengths.AddressLine, ParameterDirection.Output );
sp.Parameters.Add( "@city", SqlDbType.NVarChar, UDDI.Constants.Lengths.City, ParameterDirection.Output );
sp.Parameters.Add( "@stateProvince", SqlDbType.NVarChar, UDDI.Constants.Lengths.StateProvince, ParameterDirection.Output );
sp.Parameters.Add( "@postalCode", SqlDbType.NVarChar, UDDI.Constants.Lengths.PostalCode, ParameterDirection.Output );
sp.Parameters.Add( "@country", SqlDbType.NVarChar, UDDI.Constants.Lengths.Country, ParameterDirection.Output );
sp.Parameters.Add( "@isoLangCode", SqlDbType.VarChar, UDDI.Constants.Lengths.IsoLangCode, ParameterDirection.Output );
sp.Parameters.Add( "@businessLimit", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@businessCount", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@tModelLimit", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@tModelCount", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@serviceLimit", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@bindingLimit", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@assertionLimit", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.Add( "@assertionCount", SqlDbType.Int, ParameterDirection.Output );
sp.Parameters.SetString( "@PUID", ID );
sp.Parameters.SetString( "@email", Email );
sp.ExecuteNonQuery();
Email = sp.Parameters.GetString( "@email" );
Name = sp.Parameters.GetString( "@name" );
Phone = sp.Parameters.GetString( "@phone" );
CompanyName = sp.Parameters.GetString( "@companyName" );
AltPhone = sp.Parameters.GetString( "@altPhone" );
AddressLine1 = sp.Parameters.GetString( "@addressLine1" );
AddressLine2 = sp.Parameters.GetString( "@addressLine2" );
City = sp.Parameters.GetString( "@city" );
StateProvince = sp.Parameters.GetString( "@stateProvince" );
PostalCode = sp.Parameters.GetString( "@postalCode" );
Country = sp.Parameters.GetString( "@country" );
IsoLangCode = sp.Parameters.GetString( "@isoLangCode" );
BusinessLimit = sp.Parameters.GetInt( "@businessLimit" );
BusinessCount = sp.Parameters.GetInt( "@businessCount" );
TModelLimit = sp.Parameters.GetInt( "@tModelLimit" );
TModelCount = sp.Parameters.GetInt( "@tModelCount" );
ServiceLimit = sp.Parameters.GetInt( "@serviceLimit" );
BindingLimit = sp.Parameters.GetInt( "@bindingLimit" );
AssertionLimit = sp.Parameters.GetInt( "@assertionLimit" );
AssertionCount = sp.Parameters.GetInt( "@assertionCount" );
Debug.Leave();
}
public void Serialize( Stream stream )
{
//
// Serialize it as XML into a stream
//
StreamWriter writer = new StreamWriter( stream, Encoding.UTF8 );
XmlSerializer serializer = new XmlSerializer( typeof( UserInfo ) );
serializer.Serialize( writer, this );
writer.Flush();
stream.Position = 0;
}
public void CheckAge( int timeWindow )
{
TimeSpan duration = DateTime.Now - created;
Debug.Write( SeverityType.Info,
CategoryType.Authorization,
"Ticket is dated: " + created.ToLongDateString() + ", " + created.ToLongTimeString() );
if( duration.TotalMinutes > timeWindow )
{
#if never
throw new UDDIException( UDDI.ErrorType.E_authTokenExpired,
"The submitted credentials have expired." );
#endif
throw new UDDIException( UDDI.ErrorType.E_authTokenExpired, "UDDI_ERROR_CREDENTIALS_EXPIRED" );
}
}
public void SetPublisherRole( string userID )
{
Role = RoleType.Publisher;
ID = userID;
}
public void SetRole( IPrincipal principal )
{
//
// Determine the role of the caller and assign it into the user object
//
if( IsInRole( Config.GetString( "GroupName.Administrators", "S-1-5-32-544" ), principal ) )
{
Role = RoleType.Administrator;
}
else if( IsInRole( Config.GetString( "GroupName.Coordinators", "S-1-5-32-544" ), principal ) )
{
Role = RoleType.Coordinator;
}
else if( IsInRole( Config.GetString( "GroupName.Publishers", "S-1-5-32-544" ), principal ) )
{
Role = RoleType.Publisher;
}
else if( IsInRole( Config.GetString( "GroupName.Users", "S-1-5-32-545" ), principal ) )
{
Role = RoleType.User;
}
else
{
Role = RoleType.Anonymous;
}
ID = principal.Identity.Name;
Name = ID;
}
public void SetAllowPreassignedKeys( bool flag )
{
AllowPreassignedKeys = flag;
}
}
}