using Bootstrap.Security;
using Longbow.Security;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
namespace Bootstrap.DataAccess
{
///
/// 用户表实体类
///
public class User : BootstrapUser
{
public const string RetrieveUsersDataKey = "BootstrapUser-RetrieveUsers";
public const string RetrieveUsersByRoleIdDataKey = "BootstrapUser-RetrieveUsersByRoleId";
public const string RetrieveUsersByGroupIdDataKey = "BootstrapUser-RetrieveUsersByGroupId";
public const string RetrieveNewUsersDataKey = "UserHelper-RetrieveNewUsers";
protected const string RetrieveUsersByNameDataKey = "BootstrapUser-RetrieveUsersByName";
///
/// 获得/设置 用户主键ID
///
public int Id { get; set; }
///
/// 获取/设置 密码
///
public string Password { get; set; }
///
/// 获取/设置 密码盐
///
public string PassSalt { get; set; }
///
/// 获取/设置 角色用户关联状态 checked 标示已经关联 '' 标示未关联
///
public string Checked { get; set; }
///
/// 获得/设置 用户注册时间
///
public DateTime RegisterTime { get; set; }
///
/// 获得/设置 用户被批复时间
///
public DateTime ApprovedTime { get; set; }
///
/// 获得/设置 用户批复人
///
public string ApprovedBy { get; set; }
///
/// 获得/设置 用户的申请理由
///
public string Description { get; set; }
///
/// 获得/设置 用户当前状态 0 表示管理员注册用户 1 表示用户注册 2 表示更改密码 3 表示更改个人皮肤 4 表示更改显示名称 5 批复新用户注册操作
///
public UserStates UserStatus { get; set; }
///
/// 获得/设置 通知描述 2分钟内为刚刚
///
public string Period { get; set; }
///
/// 获得/设置 新密码
///
public string NewPassword { get; set; }
///
/// 验证用户登陆账号与密码正确
///
///
///
///
public virtual bool Authenticate(string userName, string password)
{
if (string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(password)) return false;
string oldPassword = null;
string passwordSalt = null;
string sql = "select [Password], PassSalt from Users where ApprovedTime is not null and UserName = @UserName";
var db = DBAccessManager.DBAccess;
using (DbCommand cmd = db.CreateCommand(CommandType.Text, sql))
{
cmd.Parameters.Add(db.CreateParameter("@UserName", userName));
using (DbDataReader reader = db.ExecuteReader(cmd))
{
if (reader.Read())
{
oldPassword = (string)reader[0];
passwordSalt = (string)reader[1];
}
}
}
return !string.IsNullOrEmpty(passwordSalt) && oldPassword == LgbCryptography.ComputeHash(password, passwordSalt);
}
///
/// 查询所有用户
///
///
///
public virtual IEnumerable RetrieveUsers() => throw new NotImplementedException();
///
/// 查询所有的新注册用户
///
///
public virtual IEnumerable RetrieveNewUsers() => throw new NotImplementedException();
///
/// 删除用户
///
///
public virtual bool DeleteUser(IEnumerable value) => throw new NotImplementedException();
///
/// 保存新建
///
///
///
public virtual bool SaveUser(User p) => throw new NotImplementedException();
///
///
///
///
///
///
///
public virtual bool UpdateUser(int id, string password, string displayName) => throw new NotImplementedException();
///
///
///
///
///
///
public virtual bool ApproveUser(int id, string approvedBy) => throw new NotImplementedException();
///
///
///
///
///
///
///
public virtual bool ChangePassword(string userName, string password, string newPass)
{
bool ret = false;
if (Authenticate(userName, password))
{
string sql = "Update Users set Password = @Password, PassSalt = @PassSalt where UserName = @userName";
var passSalt = LgbCryptography.GenerateSalt();
var newPassword = LgbCryptography.ComputeHash(newPass, passSalt);
using (DbCommand cmd = DBAccessManager.DBAccess.CreateCommand(CommandType.Text, sql))
{
cmd.Parameters.Add(DBAccessManager.DBAccess.CreateParameter("@Password", newPassword));
cmd.Parameters.Add(DBAccessManager.DBAccess.CreateParameter("@PassSalt", passSalt));
cmd.Parameters.Add(DBAccessManager.DBAccess.CreateParameter("@userName", userName));
ret = DBAccessManager.DBAccess.ExecuteNonQuery(cmd) == 1;
}
}
return ret;
}
///
///
///
///
///
///
///
public virtual bool RejectUser(int id, string rejectBy) => throw new NotImplementedException();
///
/// 通过roleId获取所有用户
///
///
///
public virtual IEnumerable RetrieveUsersByRoleId(int roleId) => throw new NotImplementedException();
///
/// 通过角色ID保存当前授权用户(插入)
///
/// 角色ID
/// 用户ID数组
///
public virtual bool SaveUsersByRoleId(int id, IEnumerable userIds) => throw new NotImplementedException();
///
/// 通过groupId获取所有用户
///
///
///
public virtual IEnumerable RetrieveUsersByGroupId(int groupId) => throw new NotImplementedException();
///
/// 通过部门ID保存当前授权用户(插入)
///
/// GroupID
/// 用户ID数组
///
public virtual bool SaveUsersByGroupId(int id, IEnumerable userIds) => throw new NotImplementedException();
///
/// 根据用户名修改用户头像
///
///
///
///
public virtual bool SaveUserIconByName(string userName, string iconName) => throw new NotImplementedException();
///
///
///
///
///
///
public virtual bool SaveDisplayName(string userName, string displayName) => throw new NotImplementedException();
///
/// 根据用户名更改用户皮肤
///
///
///
///
public virtual bool SaveUserCssByName(string userName, string cssName) => throw new NotImplementedException();
///
///
///
///
///
public virtual BootstrapUser RetrieveUserByUserName(string name) => throw new NotImplementedException();
///
///
///
///
public override string ToString()
{
return string.Format("{0} ({1})", UserName, DisplayName);
}
}
///
///
///
public enum UserStates
{
///
///
///
ChangePassword,
///
///
///
ChangeTheme,
///
///
///
ChangeDisplayName,
///
///
///
ApproveUser,
///
///
///
RejectUser
}
}