using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Data.SqlClient; using System.Web; using Model.Enum; /// <summary> ///UserPurview 的摘要說明:用戶權限 /// </summary> public class UserPurview : System.Web.UI.Page { #region 獲取用戶是否擁有權限 /// <summary> /// 獲取用戶是否擁有權限,傳入權限枚舉 (與運算) /// </summary> /// <param name="_EnumUserPurview">權限枚舉</param> /// <param name="userPurview">用戶所擁有的權限</param> /// <returns></returns> public static bool GetUserPurview(E_UserPurview _EnumUserPurview, string userPurview = null) { int num = Convert.ToInt32(Convert.ToString(Convert.ToInt32(_EnumUserPurview), 2)); if (string.IsNullOrEmpty(userPurview)) { //獲取當前用戶權限 userPurview = GetUserPurview(Convert.ToInt32(HttpContext.Current.Session["uid"] ?? "0")); } if (!string.IsNullOrEmpty(userPurview)) { int User_Purview = Convert.ToInt32(userPurview); if ((User_Purview & num) != 0) { return true; } return false; } return false; } #endregion #region 添加權限 /// <summary> /// 添加權限 (或運算) /// </summary> /// <param name="_E_UserPurview">權限枚舉</param> /// <param name="uid">修要修改權限用戶的uid</param> /// <returns></returns> public static bool AddUserPurview(E_UserPurview _E_UserPurview, int uid) { string oldUserPurview = GetUserPurview(uid); int UserPurview = Convert.ToInt32(oldUserPurview); UserPurview = UserPurview | Convert.ToInt32((Convert.ToString(Convert.ToInt32(_E_UserPurview), 2))); bool s = SetUserPurview(UserPurview.ToString(), uid); return s; } #endregion #region 刪除權限 /// <summary> /// 刪除權限 (求補、與運算) /// </summary> /// <param name="_E_UserPurview">須要刪除的權限</param> /// /// <param name="uid">修要修改權限用戶的uid</param> /// <returns></returns> public static bool DeleteUserPurview(E_UserPurview _E_UserPurview, int uid) { string oldUserPurview = GetUserPurview(uid); int UserPurview = Convert.ToInt32(oldUserPurview); UserPurview = UserPurview & (~Convert.ToInt32((Convert.ToString(Convert.ToInt32(_E_UserPurview), 2)))); bool s = SetUserPurview(UserPurview.ToString(), uid); return s; } #endregion #region 將用戶權限寫入數據庫 /// <summary> /// 將用戶權限寫入數據庫 /// </summary> /// <param name="userPuerview"></param> /// <returns></returns> public static bool SetUserPurview(string userPuerview, int uid) { try { int parentId = Convert.ToInt32(HttpContext.Current.Session["uid"] ?? "0"); string sql = "UPDATE User SET UserPurview=@userPuerview WHERE UID =@uid and (parentid=@parentId or uid=@parentId)"; SqlParameter[] param = new SqlParameter[] { new SqlParameter("@userPuerview",userPuerview), new SqlParameter("@uid",uid), new SqlParameter("@parentId",parentId) }; CDataAccess.ExecSql(sql, param); return true; } catch { return false; } } #endregion #region 根據用戶uid查詢用戶權限 /// <summary> /// 根據用戶uid查詢用戶權限 /// </summary> /// <param name="uid"></param> /// <returns></returns> public static string GetUserPurview(int uid) { try { int parentId = Convert.ToInt32(HttpContext.Current.Session["uid"] ?? "0"); string sql = "select User from User where uid =@uid and (ParentID=@parentid or uid=@parentid)"; SqlParameter[] param = new SqlParameter[] { new SqlParameter("@uid",uid), new SqlParameter("@parentid",parentId) }; string userPurview = CDataAccess.ExecuteScalar(sql, param).ToString(); return userPurview; } catch { return "0"; } } #endregion }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Model.Enum { public enum E_UserPurview { /// <summary> /// 可否看到價格 /// </summary> price_enable = 1, /// <summary> /// 支付權限 /// </summary> checkout_enable = 2, /// <summary> /// 修改查看本身帳戶的權限 /// </summary> account_enable = 4 } }
注意:枚舉值類型只能是1,2,4,8,....html
若是用3 二進制是11,意味着有兩種權限,因此這裏捨棄不用(位數表明權限)sql
參考:http://www.cnblogs.com/qfcndtt/archive/2012/08/03/2621713.html數據庫