📄 usr.cs
字号:
using System;
using System.Data;
using System.Xml ;
using COAdmin.COMMON;
using COAdmin.DAL ;
namespace COAdmin.BLL
{
/// <summary>
/// User 的摘要说明。
/// </summary>
public class Usr
{
public Usr()
{
//实例化时,指定文件路径
// _usrXmlDocPath = COAdminGlobals.ConfigFilePath + "SysUser.xml" ;
// _roleXmlDocPath = COAdminGlobals.ConfigFilePath + "SysRole.xml" ;
}
#region 私有变量
private string _userID;
private string _groupID ;
private string _userName ;
private string _password ;
private string _roles ;
private string _groupName ;
private string _usrXmlDocPath = COAdminGlobals.ConfigFilePath + "SysUser.xml" ;
private XmlAccess xa = new XmlAccess() ;
#endregion
#region 公共属性
/// <summary>
/// 用户ID
/// </summary>
public string UserID
{
get{ return _userID ;}
set{ _userID = value ;}
}
/// <summary>
/// 所属组ID
/// </summary>
public string GroupID
{
get{ return _groupID ; }
set{ _groupID = value ;}
}
/// <summary>
/// 所属组名称
/// </summary>
public string GroupName
{
get{ return _groupName ; }
set{ _groupName = value ;}
}
/// <summary>
/// 用户名
/// </summary>
public string UserName
{
get{ return _userName ; }
set{ _userName = value ;}
}
/// <summary>
/// 密码
/// </summary>
public string Password
{
get{ return _password ; }
set{ _password = value ; }
}
public string Roles
{
get { return _roles ;}
set { _roles = value ;}
}
#endregion
#region 公共方法
/// <summary>
/// 添加新用户
/// </summary>
/// <returns>添加结果 0:成功,1:存在相同用户 -1:失败</returns>
public int AddUser()
{
int ret = -1 ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
if(xa.FindNode(".//User[@id='" + this._userID + "']"))
{
//存在相同的用户,返回1
ret = 1 ;
return ret ;
}
string[] attName = {"id","password","dsc"} ;
string[] attVal = {_userID,_password,_userName} ;
//执行添加
string path=".//Group[@id='" + _groupID + "']" ;
ret = xa.AddNode(path,"User",attName,attVal) ;
//保存
xa.SaveXml(this._usrXmlDocPath) ;
return ret ;
}
/// <summary>
/// 修改用户信息
/// </summary>
/// <returns>修改结果 0:成功 1:失败</returns>
public int ModifyUser()
{
int ret = -1 ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//路径
string[] attName = {"id","dsc"} ;
string path = ".//User[@id='" + this._userID + "']" ;
string[] attVal = {_userID,_userName} ;
//修改用户信息
ret = xa.ModifyAttribute(path,attName,attVal) ;
//保存
xa.SaveXml(this._usrXmlDocPath) ;
return ret ;
}
/// <summary>
/// 修改用户登录密码
/// </summary>
/// <param name="oldPwd">原密码</param>
/// <param name="pwd">新密码</param>
/// <returns>执行结果 0:修改成功 1:原密码错误</returns>
public int ModifyPwd(string oldPwd,string pwd)
{
int ret = -1 ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//路径
string path = ".//User[@id='" + _userID + "']" ;
//先判断原密码正确与否
XmlNode node = xa.GetSingleNode( ".//User[@id='" + this._userID + "' and @password='" + this._password + "']" );
if(node == null)
{
ret = 1 ;
return ret ;
}
//修改函数的参数
string[] name = {"password"} ;
string[] val = {pwd} ;
//修改用户密码
ret = xa.ModifyAttribute(path,name,val) ;
//保存
xa.SaveXml(this._usrXmlDocPath) ;
return ret ;
}
/// <summary>
/// 删除用户信息
/// </summary>
/// <param name="userID">待删除的用户ID</param>
/// <returns>删除结果 0:成功 -1:失败</returns>
public int DeleteUser(string userID)
{
int ret = -1 ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//路径
string path = ".//User[@id='" + userID + "']" ;
//执行删除操作
ret = xa.DeleteNode(path) ;
//保存删除后的XML文
xa.SaveXml(this._usrXmlDocPath) ;
return ret ;
}
/// <summary>
/// 通过组ID获取用户信息
/// </summary>
/// <param name="groupID">组ID</param>
/// <param name="groupName">组名称</param>
/// <returns>用户DataTable</returns>
public DataTable GetUserByGroup(string groupID,string groupName)
{
DataTable ret = null ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//节点路径
// string path = ".//Group[@id='" + groupID + "']" ;
string path = ".//Group[@id='" + groupID + "']/User" ;
//获取节点的所有子节点
// XmlNodeList list = xa.GetChildNodes(path) ;
XmlNodeList list = xa.GetNodes(path) ;
ret = NodeListToTable(list,groupID,groupName) ;
return ret ;
}
/// <summary>
/// 用户节点集合转化为DataTable
/// </summary>
/// <param name="list">节点集合</param>
/// <param name="groupID">组ID</param>
/// <param name="groupName">组名称</param>
/// <returns>用户DataTable</returns>
private DataTable NodeListToTable(XmlNodeList list,string groupID,string groupName)
{
DataTable dt = CreateDataTable() ;
if(list==null)
{
return dt ;
}
for(int i=0;i<list.Count;i++)
{
XmlNode nd = list[i] ;
//新建行
DataRow dr = dt.NewRow() ;
dr["UserID"] = nd.Attributes["id"].Value ;
dr["UserName"] = nd.Attributes["dsc"].Value ;
dr["GroupID"] = groupID ;
dr["GroupName"] = groupName ;
dt.Rows.Add(dr) ;
}
return dt ;
}
/// <summary>
/// 创建用户表
/// </summary>
/// <returns>DataTable</returns>
private DataTable CreateDataTable()
{
DataTable dt = new DataTable() ;
dt.Columns.Add("UserID") ;
dt.Columns.Add("UserName") ;
dt.Columns.Add("GroupID") ;
dt.Columns.Add("GroupName") ;
return dt ;
}
/// <summary>
/// 指定用户属性
/// </summary>
/// <param name="dr"></param>
private void AssignAttribute(DataRow dr)
{
_userID = dr["UserID"].ToString() ;
_groupID = dr["GroupID"].ToString() ;
_userName = dr["UserName"].ToString() ;
_groupName = dr["GroupName"].ToString() ;
}
/// <summary>
/// 用户登录
/// </summary>
/// <param name="loginID">登录ID</param>
/// <param name="pwd">密码</param>
/// <returns>登录结果</returns>
public int UserLogin(string loginID,string pwd)
{
int ret = -1 ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//验证用户名的路径
string path = ".//User[@id='" + loginID + "']" ;
if(!xa.FindNode(path))
{
// 用户名不正确
ret = 2 ;
return ret ;
}
//加密码的路径
path = ".//User[@id='" + loginID + "' and @password='" + pwd + "']" ;
if(!xa.FindNode(path))
{
//密码错误
ret = 1 ;
return ret ;
}
ret = 0 ;
// 通过验证,指定用户对象属性
this._userID = loginID ;
this._password = pwd ;
//通过验证,取权限列表
//将权限列表整编为逗号分隔的字符串
_roles = GetUsrRoles(loginID) ;
return ret ;
}
/// <summary>
/// 获取用户的权限
/// </summary>
/// <param name="usrID">用户ID</param>
/// <returns></returns>
public string GetUsrRoles(string usrID)
{
string roles = "" ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
string path = ".//User[@id='" + usrID + "']/role" ;
//取用户权限列表
XmlNodeList list = xa.GetNodes(path) ;
if(list == null)
{
return roles ;
}
//将权限列表整编为逗号分隔的字符串
for(int i=0;i<list.Count;i++)
{
if(roles != "")
{
roles += "," ;
}
roles += list[i].Attributes["id"].Value ;
}
return roles ;
}
/// <summary>
/// 软件解锁
/// </summary>
/// <param name="pwd">密码</param>
/// <returns></returns>
public bool UnLock(string pwd)
{
//节点路径
string path = ".//User[@id='" + this._userID + "' and @password='" + pwd + "']" ;
// 验证是否正确
return xa.FindNode(path) ;
}
/// <summary>
/// 判断用户是否具有某角色
/// </summary>
/// <param name="role">角色名</param>
/// <returns>匹配结果</returns>
public bool HasRole(string role)
{
//取用户权限
string[] r = _roles.Split(new char[] {','}) ;
//匹配
for(int i=0;i<r.Length;i++)
{
if(r[i] == role)
{
return true ;
}
}
// 不匹配
return false ;
}
/// <summary>
/// 保存用户角色信息
/// </summary>
/// <param name="usrID">用户ID</param>
/// <param name="roles">角色</param>
public void AddRoles(string usrID,string roles)
{
string[] spRole = roles.Split(new char[] {','}) ;
string path=".//User[@id='" + usrID + "']" ;
//读取XML文
xa.Load(this._usrXmlDocPath) ;
//先清除用户的角色
XmlNode node = xa.GetSingleNode(path) ;
XmlNodeList list = xa.GetNodes(path+"/role") ;
foreach(XmlNode nd in list)
{
node.RemoveChild(nd) ;
}
//逐个添加角色
foreach(string role in spRole)
{
string[] attName = {"id"} ;
string[] attVal = {role} ;
//执行添加
xa.AddNode(path,"role",attName,attVal) ;
}
//保存
xa.SaveXml(this._usrXmlDocPath) ;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -