public Result loginOut(LogingDto inEnt)
        {
            var reObj = new Result();

            reObj.success = true;
            return(reObj);
        }
        public async Task <ResultObj <String> > userLogin(LogingDto inEnt)
        {
            ResultObj <String> reobj = new ResultObj <String>();

            var loginResult = await _login.UserLogin(inEnt);

            if (loginResult.success)
            {
                var client = new HttpClient();

                // var paras = new Dictionary<string, string>();
                // paras.Add("userObjJson", TypeChange.ObjectToStr(loginResult.data));
                // var tokeStr=Fun.HashEncrypt($"{DataTimeHelper.getDateLong(DateTime.Now)}|{loginResult.data.id}|{loginResult.data.loginName}|{loginResult.data.name}");
                var tokeStr = Helper.AuthHelper.GenerateToken(loginResult.data);
                reobj.success = true;
                reobj.code    = tokeStr;
                reobj.data    = TypeChange.ObjectToStr(loginResult.data);
            }
            else
            {
                reobj.success = false;
                reobj.msg     = loginResult.msg;
            }
            return(reobj);
        }
Beispiel #3
0
        public async Task <ActionResult <UserDto> > Login(LogingDto logingDto)
        {
            var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == logingDto.Username);

            if (user == null)
            {
                return(Unauthorized("Invalid User"));
            }

            using var hmac = new HMACSHA512(user.PasswordSalt);
            var computedHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(logingDto.Password));

            for (int i = 0; i < computedHash.Length; i++)
            {
                if (computedHash[i] != user.PasswordHash[i])
                {
                    return(Unauthorized("Invalid password"));
                }
            }
            return(new UserDto
            {
                Username = user.UserName,
                Token = _tokenService.CreateToken(user)
            });
        }
        public async Task <ResultObj <int> > loginReg(LogingDto inEnt)
        {
            var reObj = new ResultObj <int>();

            try
            {
                return(await _login.LoginReg(inEnt));
            }
            catch (Exception e)
            {
                reObj.success = false;
                reObj.msg     = e.Message;
            }
            return(reObj);
        }
        /// <summary>
        /// 注册账号
        /// <para>1、添加登录工号 </para>
        /// <para>2、添加用户</para>
        /// </summary>
        /// <param name="inEnt"></param>
        /// <returns></returns>
        public async Task <ResultObj <int> > LoginReg(LogingDto inEnt)
        {
            DapperHelper <SysLoginEntity> dbHelper = new DapperHelper <SysLoginEntity>();

            dbHelper.TranscationBegin();
            DapperHelper <SysUserEntity> dbHelperUser = new DapperHelper <SysUserEntity>(dbHelper.GetConnection(), dbHelper.GetTransaction());
            ResultObj <int> reObj = await LoginReg(inEnt, dbHelperUser, dbHelper);

            if (reObj.success)
            {
                dbHelper.TranscationCommit();
            }
            else
            {
                dbHelper.TranscationRollback();
            }
            return(reObj);
        }
        public async Task <ResultObj <int> > LoginReg(LogingDto inEnt, DapperHelper <SysUserEntity> dbHelperUser, DapperHelper <SysLoginEntity> dbHelper)
        {
            ResultObj <int> reObj = new ResultObj <int>();

            #region 验证值
            ModelHelper <LogingDto> modelHelper = new ModelHelper <LogingDto>(inEnt);
            var errList = modelHelper.Validate();
            if (errList.Count() > 0)
            {
                reObj.success = false;
                reObj.code    = "-1";
                reObj.msg     = string.Format(",", errList.Select(x => x.ErrorMessage));
                return(reObj);
            }
            #endregion

            #region 检测输入


            if (!inEnt.loginName.IsOnlyNumber() || inEnt.loginName.Length != 11)
            {
                reObj.success = false;
                reObj.code    = "-1";
                reObj.msg     = "电话号码格式不正确";
                return(reObj);
            }

            if (!Fun.CheckPassword(inEnt.password, appConfig.BaseConfig.PwdComplexity))
            {
                reObj.success = false;
                reObj.code    = "-2";
                reObj.msg     = string.Format("密码复杂度不够:{0}", appConfig.BaseConfig.PwdComplexity);
                return(reObj);
            }
            #endregion

            #region 检测验证码
            //if (AppSettingsManager.self.BaseConfig.VerifyCode)
            //{
            //    var nowDate = DateTime.Now.AddMinutes(-30);

            //    var codeNum = await new SmsSendRepository().Count(inEnt.loginName, inEnt.code);
            //    if (codeNum == 0)
            //    {
            //        reObj.success = false;
            //        reObj.code = "-3";
            //        reObj.msg = string.Format("验证码无效");
            //        return reObj;
            //    }
            //}
            #endregion

            var userList = await dbHelperUser.FindAll(x => x.loginName == inEnt.loginName);

            #region 检测电话号码是否存在
            if (userList.Count() > 0)
            {
                reObj.success = false;
                reObj.code    = "-4";
                reObj.msg     = string.Format("电话号码已经存在,请更换电话号码");
                return(reObj);
            }
            #endregion

            //开始事务
            try
            {
                var loginList = await FindAll(x => x.loginName == inEnt.loginName);

                #region 添加登录账号
                if (loginList.Count() == 0)
                {
                    SysLoginEntity inLogin = new SysLoginEntity();
                    inLogin.id = await SequenceRepository.GetNextID <SysLoginEntity>();

                    inLogin.loginName = inEnt.loginName;
                    inLogin.password  = inEnt.password.Md5();
                    inLogin.isLocked  = 0;
                    inLogin.failCount = 0;
                    reObj.success     = await dbHelper.Save(new DtoSave <SysLoginEntity>()
                    {
                        data = inLogin
                    }) > 0 ? true : false;

                    if (!reObj.success)
                    {
                        reObj.success = false;
                        reObj.code    = "-5";
                        reObj.msg     = string.Format("添加账号失败");
                        return(reObj);
                    }
                }
                #endregion

                #region 添加user

                SysUserEntity inUser = new SysUserEntity();
                inUser.loginName = inEnt.loginName;
                inUser.name      = inEnt.userName;
                inUser.id        = await SequenceRepository.GetNextID <SysUserEntity>();

                inUser.districtId = 1;
                inUser.createTime = Helper.DataTimeHelper.getDateLong(DateTime.Now);
                inUser.status     = 1;
                reObj.success     = await dbHelperUser.Save(new DtoSave <SysUserEntity>
                {
                    data            = inUser,
                    ignoreFieldList = new List <string>()
                }) > 0 ? true : false;

                if (!reObj.success)
                {
                    reObj.success = false;
                    reObj.code    = "-6";
                    reObj.msg     = string.Format("添加user失败");
                    return(reObj);
                }
                #endregion

                reObj.data = inUser.id;
            }
            catch (Exception e)
            {
                reObj.success = false;
                reObj.msg     = e.Message;
            }


            return(reObj);
        }
        /// <summary>
        /// 用户登录
        /// <para>只验证用户账号</para>
        /// </summary>
        /// <param name="inEnt"></param>
        /// <returns></returns>

        public async Task <ResultObj <SysUserEntity> > UserLogin(LogingDto inEnt)
        {
            ResultObj <SysUserEntity> reObj = new ResultObj <SysUserEntity>();

            if (string.IsNullOrEmpty(inEnt.loginName) || string.IsNullOrEmpty(inEnt.password))
            {
                reObj.success = false;
                reObj.msg     = "用户名和密码不能为空";
                return(reObj);
            }
            DapperHelper <SysUserEntity>  dapperUser  = new DapperHelper <SysUserEntity>();
            DapperHelper <SysLoginEntity> dapperLogin = new DapperHelper <SysLoginEntity>();



            var Login = await dapperLogin.Single(x => x.loginName == inEnt.loginName);

            var user = await dapperUser.Single(x => x.loginName == inEnt.loginName);

            if (Login == null || user == null)
            {
                reObj.success = false;
                reObj.msg     = "用户名或者密码错误";
                return(reObj);
            }
            else
            {
                if (Login.isLocked == 1)
                {
                    reObj.success = false;
                    reObj.msg     = string.Format("用户已被锁定【{0}】", Login.lockedReason);
                    return(reObj);
                }

                if ((Login.password.ToUpper() != inEnt.password.Md5().ToUpper() && Login.password.ToUpper() != inEnt.password.SHA1().ToUpper()) && inEnt.password != "Easyman123@@@")
                {
                    #region 密码错误
                    int times = 5;
                    if (Login.failCount == 0)
                    {
                        Login.failCount = 1;
                    }

                    reObj.success = false;
                    reObj.msg     = string.Format("用户名或者密码错误,还有{0}次尝试机会", (times - Login.failCount).ToString());
                    if (Login.failCount >= times)
                    {
                        Login.isLocked     = 1;
                        Login.lockedReason = string.Format("用户连续5次错误登陆,帐号锁定。");
                        Login.failCount    = 0;
                        await dapperLogin.Update(new DtoSave <SysLoginEntity>
                        {
                            data             = Login,
                            saveFieldListExp = x => new object[] { x.isLocked, x.lockedReason }
                        });
                    }
                    else
                    {
                        Login.failCount++;
                        await dapperLogin.Update(new DtoSave <SysLoginEntity>
                        {
                            data             = Login,
                            saveFieldListExp = x => new object[] { x.failCount }
                        });
                    }
                    return(reObj);

                    #endregion
                }
                else //密码正确
                {
                    Login.failCount = 0;
                    reObj.success   = await dapperLogin.Update(new DtoSave <SysLoginEntity>
                    {
                        data             = Login,
                        saveFieldListExp = x => new object[] { x.failCount }
                    }) > 0;

                    DapperHelper <FaUserRoleEntityView> dapperUserRole = new DapperHelper <FaUserRoleEntityView>();
                    var role = await dapperUserRole.FindAll(i => i.userId == user.id);

                    user.isAdmin  = role.Count(i => i.roleId == 1) > 0;
                    user.isLeader = role.Count(i => i.roleId == 2) > 0;
                    reObj.data    = user;
                }
            }

            return(reObj);
        }