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,....
如果用3 二进制是11,意味着有两种权限,所以这里舍弃不用(位数代表权限)
参考:http://www.cnblogs.com/qfcndtt/archive/2012/08/03/2621713.html
转载于:https://www.cnblogs.com/wugang/p/3160337.html