示例#1
0
        /// <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);
        }
示例#2
0
        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));
            }
        }
示例#3
0
        protected void WriteMenuCookie(long menuTid)
        {
            string strName  = GlobalSetting.CurrentMenu;
            string strValue = CodingUtils.AesEncrypt(menuTid.ToString());

            WebUtils.WriteCookie(strName, strValue);
        }
示例#4
0
 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));
 }
示例#5
0
        private string WriteLoginCookie(Token token)
        {
            string strName  = GlobalSetting.CurrentLoginUserGuid;
            var    value    = token.ToJsonString();
            string strValue = CodingUtils.AesEncrypt(value);

            WebUtils.WriteCookie(strName, strValue);
            return(value);
        }
示例#6
0
        /// <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));
        }
示例#7
0
        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, "]"));
                    }
                }
            }
        }
示例#9
0
        /// <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, "登录出错"));
            }
        }
示例#10
0
 /// <summary/>
 public static bool IsBitSet(this byte value, int bitNo)
 {
     return(CodingUtils.IsBitSet((int)value, bitNo));
 }