/// <summary> /// 更新密码 /// </summary> /// <param name="user"></param> /// <returns></returns> public async Task <string> UpdatePwd(UpdatePwdVm user) { if (user == null) { return(Tip.BadRequest); } if (string.IsNullOrEmpty(user.Pwd) || string.IsNullOrEmpty(user.OldPwd)) { return(Tip.BadRequest); } var currentUser = await Entity.FirstOrDefaultAsync(r => r.Eid.Equals(user.Eid)); if (currentUser == null) { return("用户不存在"); } var pwd = CodingUtils.MD5(user.OldPwd); if (!currentUser.Pwd.Equals(pwd)) { return("旧密码错误"); } var newPwd = CodingUtils.MD5(user.Pwd); var rt = this.Entity.Where(r => r.Eid.Equals(user.Eid)).Set(r => r.DataChangeLastTime, DateTime.Now).Set(r => r.Pwd, newPwd).Update() > 0; return(!rt ? Tip.UpdateError : string.Empty); }
public IViewComponentResult Invoke() { //检查是否登录 //从cookie 拿到token var token = CodingUtils.AesDecrypt(WebUtils.GetCookie(GlobalSetting.CurrentLoginUserGuid)); if (string.IsNullOrEmpty(token)) { return(Content(string.Empty)); } try { var tokenObj = new Token(token); SystemUsers systemUser = AccountRespository.Entity.FirstOrDefault(r => r.Eid.Equals(tokenObj.Eid)); if (systemUser == null || !systemUser.IsActive) { return(Content(string.Empty)); } var menuList = MenuRespository.GetAllRightsMenus(systemUser.Eid, systemUser.MenuRights); ////拼接Menu var html = RenderMenu(menuList); return(new HtmlContentViewComponentResult(new HtmlString(html))); } catch (Exception) { return(Content(string.Empty)); } }
protected void WriteMenuCookie(long menuTid) { string strName = GlobalSetting.CurrentMenu; string strValue = CodingUtils.AesEncrypt(menuTid.ToString()); WebUtils.WriteCookie(strName, strValue); }
public void SetCwIandBwi(byte cwi, byte bwi) { this.SetInterfaceByte(0, InterfaceByteType.Tb, CodingUtils.NibbleToByte(bwi, cwi)); this.InvokePropertyChanged(nameof(T1ProtocolParameters.Cwi)); this.InvokePropertyChanged(nameof(T1ProtocolParameters.CwiValue)); this.InvokePropertyChanged(nameof(T1ProtocolParameters.Bwi)); this.InvokePropertyChanged(nameof(T1ProtocolParameters.BwiValue)); }
private string WriteLoginCookie(Token token) { string strName = GlobalSetting.CurrentLoginUserGuid; var value = token.ToJsonString(); string strValue = CodingUtils.AesEncrypt(value); WebUtils.WriteCookie(strName, strValue); return(value); }
/// <summary> /// 手动添加用户 /// </summary> /// <returns></returns> public async Task <Tuple <bool, string> > UserAdd(SystemUsers info, Token user) { if (info == null || string.IsNullOrEmpty(info.UserName) || info.RoleTid < 1) { return(new Tuple <bool, string>(false, Tip.BadRequest)); } info.Eid = info.Eid.ToLower(); var existItem = await Entity.FirstOrDefaultAsync(r => r.Eid.Equals(info.Eid)); if (existItem != null) { return(new Tuple <bool, string>(false, "该员工已存在")); } var role = await this.Entitys.SystemRole.FirstOrDefaultAsync(r => r.Tid.Equals(info.RoleTid)); if (role == null) { return(new Tuple <bool, string>(false, Tip.RoleNotExist)); } //获取创建者角色的包括父级的名称列表 var createRoleList = new List <long>(); GetRoleName(role, createRoleList); createRoleList.Reverse(); createRoleList = createRoleList.Distinct().ToList(); info.IsActive = true; info.Pwd = !string.IsNullOrEmpty(info.Pwd) ? info.Pwd : info.Eid; info.Pwd = CodingUtils.MD5(info.Pwd); info.MenuRights = role.MenuRights; info.DataChangeLastTime = DateTime.Now; info.CreateRoleName = "," + string.Join(",", createRoleList) + ","; info.CreateUser = user.Eid; var inertResult = DB.Insert(info) > 0; if (!inertResult) { return(new Tuple <bool, string>(false, Tip.SystemError)); } return(new Tuple <bool, string>(true, string.Empty)); }
public void SetDiFiFmax(Di?di, FiFmax?fiFmax) { DbC.Assure((di.HasValue && fiFmax.HasValue) || (di.HasValue == false && fiFmax.HasValue == false), "di and fi/fmax must be either both defined or undefined"); if (di.HasValue && fiFmax.HasValue) { this.SetInterfaceByte(0, InterfaceByteType.Ta, CodingUtils.NibbleToByte((byte)fiFmax, (byte)di)); } else { this.SetInterfaceByte(0, InterfaceByteType.Ta, null); } this.InvokePropertyChanged(nameof(GlobalInterfaceBytes.Di)); this.InvokePropertyChanged(nameof(GlobalInterfaceBytes.DiValue)); this.InvokePropertyChanged(nameof(GlobalInterfaceBytes.FiFmax)); this.InvokePropertyChanged(nameof(GlobalInterfaceBytes.FiFmaxValue)); }
/// <summary> /// 在执行操作方法之前由 ASP.NET MVC 框架调用。 /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { if (AllowAll) { return; } var currentContext = new filterContextInfo(filterContext); SystemUsers systemUser; //检查是否登录 //从cookie 拿到token var token = CodingUtils.AesDecrypt(WebUtils.GetCookie(GlobalSetting.CurrentLoginUserGuid)); if (string.IsNullOrEmpty(token)) { Unauthorized(filterContext, currentContext);//跳转登录 return; } try { var tokenObj = new Token(token); systemUser = AccountRespository.Entity.FirstOrDefault(r => r.Eid.Equals(tokenObj.Eid)); ((BaseController)filterContext.Controller).UserToken = tokenObj; var smTid = CodingUtils.AesDecrypt(WebUtils.GetCookie(GlobalSetting.CurrentMenu)); if (!string.IsNullOrEmpty(smTid)) { ((BaseController)filterContext.Controller).CurrentMenuTid = long.Parse(smTid); } } catch (Exception ex) { LogHelper.Warn("OnActionExecuting", ex); WebUtils.CookieClear(); Unauthorized(filterContext, currentContext);//跳转登录 return; } //检测用户是否被禁用 if (systemUser == null || !systemUser.IsActive) { WebUtils.CookieClear(); Forbidden(filterContext);//跳转登录 return; } //检查当前用户是否有访问当前menu的权限 var currentUrl = currentContext.controllerName + "/" + currentContext.actionName; if (!string.IsNullOrEmpty(currentContext.area)) { currentUrl = currentContext.area + "/" + currentUrl; } //检查是否是上帝模式// if (GlobalSetting.GoldList.Contains(systemUser.Eid)) { return; } var menuTid = MenuRespository.HaveMenuPermission(currentUrl, systemUser.MenuRights); if (menuTid < 0) { Forbidden(filterContext, string.Concat("[", systemUser.Eid, "-", systemUser.UserName, "]")); return; } if (menuTid == 0) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { var refer = filterContext.HttpContext.Request.Headers["Referer"].ToString(); if (!string.IsNullOrEmpty(refer)) { var s1 = refer.Split('?')[0].Split('/').ToList(); s1.Reverse(); if (s1.Count < 2) { return; } var s2 = s1.Take(2).Reverse().ToList(); currentUrl = s2[0] + "/" + s2[1]; if (!string.IsNullOrEmpty(currentContext.area)) { currentUrl = currentContext.area + "/" + currentUrl; } menuTid = MenuRespository.HaveMenuPermission(currentUrl, systemUser.MenuRights); } } } if (menuTid == 0) { return; } //走到这里 一定是menu配置过的 WriteMenuCookie(menuTid); if (menuTid == 0) { return; } if (filterContext.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor) { var apiAttribute = controllerActionDescriptor.MethodInfo.GetCustomAttribute <APIAttribute>(); if (apiAttribute != null) { var controlFullName = controllerActionDescriptor.ControllerTypeInfo.Name; var actionFullName = controllerActionDescriptor.MethodInfo.Name; //检查当前Menu 是否配置过了当前的Action var isExist = MenuRespository.HaveActionPermission(menuTid, systemUser.RoleTid, controlFullName, actionFullName); if (!isExist) { Forbidden(filterContext, string.Concat("[", systemUser.Eid, "-", systemUser.UserName, "]")); } } } }
/// <summary> /// 登录 /// </summary> /// <param name="info"></param> /// <returns></returns> public async Task <Tuple <bool, string> > LogOn(LogOnVM info) { try { if (info == null || string.IsNullOrEmpty(info.eid) || string.IsNullOrEmpty(info.pwd)) { return(new Tuple <bool, string>(false, Tip.BadRequest)); } var existUser = await this.Entity.FirstOrDefaultAsync(r => r.IsActive && r.Eid.Equals(info.eid)); if (existUser == null) { return(new Tuple <bool, string>(false, "该账号不存在,请联系系统管理员!")); } var pwd = CodingUtils.MD5(info.pwd); if (!existUser.Pwd.Equals(pwd)) { return(new Tuple <bool, string>(false, "密码错误!")); } var systemUserAndRole = await(from u in this.Entity from ro in this.Entitys.SystemRole.Where(r => r.Tid.Equals(u.RoleTid)).DefaultIfEmpty() where u.Eid.Equals(info.eid) select new { user = u, role = ro }).FirstOrDefaultAsync(); var systemUser = systemUserAndRole?.user; if (systemUser == null) { return(new Tuple <bool, string>(false, "该账号不存在,请联系系统管理员!")); } if (!systemUser.IsActive) { return(new Tuple <bool, string>(false, "该账号已被禁用,请联系系统管理员!")); } var role = systemUserAndRole.role ?? new SystemRole(); var loginIp = WebUtils.GetClientIP(); var userAgent = WebUtils.GetUserAgent(); var eid = info.eid.ToLower(); //更新 var updateQuery = this.Entity.Where(r => r.Eid.Equals(eid)) .Set(r => r.LoginIp, loginIp) .Set(r => r.LastLoginTime, DateTime.Now) .Set(r => r.UserAgent, userAgent); //如果role不存在 也就是没有角色 menurights却有值 if (string.IsNullOrEmpty(role.RoleName) && !string.IsNullOrEmpty(systemUser.MenuRights)) { updateQuery = updateQuery.Set(r => r.MenuRights, string.Empty); } var updateResult = await updateQuery.UpdateAsync() > 0; if (!updateResult) { return(new Tuple <bool, string>(false, "用户信息更新出错!")); } WriteLoginCookie(new Token { Code = systemUser.UserName, Eid = eid, MenuRights = systemUser.MenuRights, RoleTid = role.Tid, RoleName = role.RoleName, }); return(new Tuple <bool, string>(true, null)); } catch (Exception ex) { //LogHelper.Warn("login", ex); return(new Tuple <bool, string>(false, "登录出错")); } }
/// <summary/> public static bool IsBitSet(this byte value, int bitNo) { return(CodingUtils.IsBitSet((int)value, bitNo)); }