45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Web;
 | 
						|
using System.Security.Principal;
 | 
						|
using ProjectTracker.Library.Security;
 | 
						|
 | 
						|
public static class Security
 | 
						|
{
 | 
						|
  public static void UseAnonymous()
 | 
						|
  {
 | 
						|
    // setting an unauthenticated principal when running
 | 
						|
    // under the VShost causes serialization issues
 | 
						|
    // and isn't strictly necessary anyway
 | 
						|
    if (UrlIsHostedByVS(HttpContext.Current.Request.Url))
 | 
						|
      return;
 | 
						|
    ProjectTracker.Library.Security.PTPrincipal.Logout();
 | 
						|
  }
 | 
						|
 | 
						|
  public static void Login(CslaCredentials credentials)
 | 
						|
  {
 | 
						|
    if (string.IsNullOrEmpty(credentials.Username))
 | 
						|
      throw new System.Security.SecurityException(
 | 
						|
        "Valid credentials not provided");
 | 
						|
 | 
						|
    // set to unauthenticated principal
 | 
						|
    PTPrincipal.Logout();
 | 
						|
 | 
						|
    PTPrincipal.Login(credentials.Username, credentials.Password);
 | 
						|
 | 
						|
    if (!Csla.ApplicationContext.User.Identity.IsAuthenticated)
 | 
						|
    {
 | 
						|
      // the user is not valid, raise an error
 | 
						|
      throw 
 | 
						|
        new System.Security.SecurityException(
 | 
						|
          "Invalid user or password");
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  public static bool UrlIsHostedByVS(Uri uri)
 | 
						|
  {
 | 
						|
    if (uri.Port >= 1024 && string.Compare(uri.Host, "localhost", StringComparison.OrdinalIgnoreCase) == 0)
 | 
						|
      return true;
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
}
 |