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; } }
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)); }
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)); }
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); } }
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); }