Exemple #1
0
        public async Task <UserTokenDTO> VerifyUserAsync(VerifyUserDTO arg, string ip)
        {
            try
            {
                var user = await userManager.FindByIdAsync(arg.UserId.ToString());

                if (user == null)
                {
                    throw new EntityNotFoundException();
                }

                var lockDate = await userManager.GetLockoutEndDateAsync(user);

                if (lockDate != null &&
                    lockDate.Value > DateTime.Now)
                {
                    throw new AccountLockedException();
                }

                var result = await userManager.ChangePhoneNumberAsync(user, user.PhoneNumber, arg.Code);

                if (result.Succeeded)
                {
                    //change last code to insure security.
                    var confirmationToken =
                        await userManager.GenerateChangePhoneNumberTokenAsync(user, user.PhoneNumber);

                    var roles = await userManager.GetRolesAsync(user);

                    var refreshToken = jwtService.GenerateRefreshToken(ip);

                    if (user.RefreshTokens == null)
                    {
                        user.RefreshTokens = new List <RefreshToken>();
                    }

                    user.RefreshTokens.Add(refreshToken);
                    await db.SaveChangesAsync();

                    return(new UserTokenDTO(jwtService.GenerateAuthorizationToken(user, roles),
                                            refreshToken.Token));
                }

                else
                {
                    await userManager.AccessFailedAsync(user);

                    throw new ValidationException(result.Errors);
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
Exemple #2
0
        public async System.Threading.Tasks.Task <JsonResult> CheckOutOrder(WholeOrPartialCheckoutDto req, OperatorModel member)
        {
            var res = new Response()
            {
                Data = false, Successed = false
            };

            if (ModelState.IsValid)
            {
                try
                {
                    var orderInfo = _orderRepository.GetOrderDTO(req.OrderId);
                    var user      = new VerifyUserDTO()
                    {
                        UserId = member.UserId
                    };
                    //var discount = user.MinDiscountValue;
                    req.OrderTableStatus       = OrderTableStatus.未结;
                    req.CompanyId              = orderInfo.R_Restaurant_Id;
                    req.OperateUser            = member.UserId;
                    req.CurrentMarketId        = orderInfo.R_Market_Id;
                    req.AuthPermissionDiscount = 0;
                    req.OperateUserCode        = member.UserCode;
                    CheckOutResultDTO resultDto = _checkOutService.WholeOrPartialCheckout(req, CyddCzjlUserType.会员);
                    if (resultDto != null)
                    {
                        res.Successed = true;
                        res.Data      = true;
                        var hub = GlobalHost.ConnectionManager.GetHubContext <MyHub>();
                        await hub.Clients.All.callResServiceRefersh(true);
                    }
                    else
                    {
                        res.Message = "结账失败,请联系管理员";
                    }
                }
                catch (Exception e)
                {
                    res.Message = e.Message;
                }
            }
            else
            {
                res.Message = string.Join(",", ModelState.SelectMany(ms => ms.Value.Errors).Select(e => e.ErrorMessage));
            }
            return(Json(res));
        }
Exemple #3
0
        public ActionResult GetAuthUser(VerifyUserDTO verifyUserDTO)
        {
            Response res = new Response();

            try
            {
                verifyUserDTO.UserPwd      = verifyUserDTO.UserPwd ?? "";
                verifyUserDTO.RestaurantId = OperatorProvider.Provider.GetCurrent().DepartmentId.ToInt();
                var user = _userService.GetUserInfo(verifyUserDTO);

                res.Data = user;

                if (user.State == Domain.Base.LoginState.InvalidAccount)
                {
                    res.Message = "无效的用户!";
                }
                else if (user.State == Domain.Base.LoginState.InvalidPassword)
                {
                    res.Message = "用户密码错误!";
                }
                else if (user.State == Domain.Base.LoginState.NoPermission)
                {
                    res.Message = "用户无权限操作!请确认该用户是否可管理当前餐厅";
                }
                else if (user.State == Domain.Base.LoginState.Successed)
                {
                    res.Message = "";
                }
                else
                {
                    res.Message = "网络错误,请重新操作!";
                }
            }
            catch (Exception ex)
            {
                res.Message = ex.Message;
            }

            return(Json(res));
        }
Exemple #4
0
        public async Task <ApiResponse> VerifyUser([FromBody] VerifyUserDTO arg)
        {
            try
            {
                var ip = httpService.IpAddress(Request, HttpContext);

                var token = await userService.VerifyUserAsync(arg, ip);

                httpService.SetCookie("refreshToken", token.RefreshToken, Response);
                return(new ApiResponse(InfoMessages.UserVerified, token, HttpStatusCode.OK.ToInt()));
            }
            catch (ValidationException ex)
            {
                throw new ApiException(ex.Errors, ex.StatusCode);
            }
            catch (CustomException ex)
            {
                throw new ApiException(ex, ex.StatusCode);
            }
            catch (Exception ex)
            {
                throw new ApiException(ex);
            }
        }
Exemple #5
0
        public UserDto GetUserInfo(VerifyUserDTO verifyUserDTO)
        {
            UserDto user = new UserDto();

            UserInfo verifyUser = null;

            if (verifyUserDTO.UserId > 0)
            {
                verifyUser = _userRepository.GetByUserId(verifyUserDTO.UserId);
            }
            else
            {
                verifyUser = _userRepository.GetByUserName("", verifyUserDTO.UserName, verifyUserDTO.CompanyId);
            }

            if (verifyUser == null)
            {
                user.State = LoginState.InvalidAccount;
                return(user);
            }

            if (verifyUserDTO.UserPwd != null && DESEncrypt.GetMD5(verifyUserDTO.UserPwd) != verifyUser.UserPwd)
            {
                user.State = LoginState.InvalidPassword;
                return(user);
            }

            var verifyStr = verifyUser.ManagerRestaurant.Replace(",", "");

            if (verifyUser.ManagerRestaurant.IsEmpty() || verifyStr.IsEmpty() || !ValidateExtend.IsNumber(verifyStr))
            {
                user.State = LoginState.NoPermission;
                return(user);
            }

            if (!string.IsNullOrEmpty(verifyUser.RoleId) && verifyUser.RoleId.Contains("ZZ"))
            {
                user.State = LoginState.NotActivated;
                return(user);
            }

            string[] ids = verifyUser.ManagerRestaurant.Split(',');

            var resList = _resRepository.GetList(ids);

            if (resList == null || resList.Count == 0)
            {
                user.State = LoginState.NoPermission;
                return(user);
            }

            //验证当前用户操作餐厅权限是否包含指定的餐厅
            if (verifyUserDTO.RestaurantId > 0 && !ids.Contains(verifyUserDTO.RestaurantId.ToString()))
            {
                user.State = LoginState.NoPermission;
                return(user);
            }

            var list = resList.Select(x => x.Id + "-" + x.Name).ToList();

            user.UserId   = verifyUser.UserId;
            user.State    = LoginState.Successed;
            user.UserCode = verifyUser.UserCode.Trim();
            user.UserName = verifyUser.UserName.Trim();
            //user.RoleId = verifyUser.RoleId.Trim();
            user.GroupCode         = verifyUserDTO.CompanyId.ToString(); //餐饮登录暂存公司Id
            user.Permission        = verifyUser.Permission;
            user.ManagerRestaurant = list.Join(";");                     //verifyUser.ManagerRestaurant;
            user.MinDiscountValue  = verifyUser.Discount / 100;          //折扣值需要除以100变成折扣率
            user.MaxClearValue     = verifyUser.MaxClearValue;

            return(user);
        }