⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 siteprincipal.cs

📁 企业内部信息交流系统
💻 CS
字号:
using System;
using System.Collections;
using System.Security;
using System.Security.Cryptography;
using System.Text;

using infoWeb.WebModules.Accounts;


namespace infoWeb.WebModules.Accounts.Business
{
	/// <summary>
	/// Summary description for SitePrincipal.
	/// </summary>
	public class SitePrincipal: infoWeb.WebModules.Business.BizObject, System.Security.Principal.IPrincipal
	{
		protected System.Security.Principal.IIdentity identity;
		protected ArrayList permissionList;
		protected ArrayList roleList;

		// IPrincipal Interface Requirements:
		// property Identity (IIDentity)
		// property IsInRole (boolean)

		public System.Security.Principal.IIdentity Identity
		{
			get 
			{
				return identity;
			}
			set 
			{
				identity = value;
			}
		}

		public bool IsInRole(string role)
		{
			return roleList.Contains( role );
		}

		public bool HasPermission( int permissionID )
		{
			return permissionList.Contains( permissionID );
		}

		public ArrayList Roles
		{
			get 
			{
				return roleList;
			}
		}

		public ArrayList Permissions
		{
			get 
			{
				return permissionList;
			}
		}

		public SitePrincipal( int userID )
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );			
			
			identity = new SiteIdentity( userID );
			permissionList = dataUser.GetEffectivePermissionList( userID );
			roleList = dataUser.GetUserRoles( userID );

		}

		public SitePrincipal( string emailAddress )
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );			
			
			identity = new SiteIdentity( emailAddress );
			permissionList = dataUser.GetEffectivePermissionList( ((Business.SiteIdentity)identity).UserID );
			roleList = dataUser.GetUserRoles( ((Business.SiteIdentity)identity).UserID );

		}

		public static SitePrincipal ValidateLogin(string emailAddress, string password)
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();			
			int newID;

			byte[] cryptPassword = EncryptPassword( password );
			
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );
			if (  (newID = dataUser.ValidateLogin(emailAddress, cryptPassword)) > -1 )
				return new SitePrincipal( newID );
			else
				return null;			
		}		

		public static byte[] EncryptPassword(string password)
		{
			UnicodeEncoding encoding = new UnicodeEncoding();
			byte[] hashBytes = encoding.GetBytes( password );

			// compute SHA-1 hash.
			SHA1 sha1 = new SHA1CryptoServiceProvider();
			byte[] cryptPassword = sha1.ComputeHash ( hashBytes );

			return cryptPassword;
		}
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -