示例#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
        /// <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));
        }
示例#3
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, "登录出错"));
            }
        }