public EbMqResponse Post(SaveRoleMqRequest request) { if (request?.UserIdsToUpdate == null) { return(MqResponse); } foreach (int uid in request.UserIdsToUpdate.Distinct()) { if (uid <= 0) { continue; } string uAuthId = request.SolnId + ":" + uid + ":"; User OldUser = this.Redis.Get <User>(uAuthId + "uc"); if (OldUser != null) { UpdateRedisAndNotifyUser(OldUser, "uc", request); } OldUser = this.Redis.Get <User>(uAuthId + "mc"); if (OldUser != null) { UpdateRedisAndNotifyUser(OldUser, "mc", request); } } return(MqResponse); }
private void UpdateRedisAndNotifyUser(User OldUser, string Wc, SaveRoleMqRequest request) { try { IEbConnectionFactory factory = new EbConnectionFactory(request.SolnId, Redis); User NewUser = User.GetUserObject(factory.DataDB, OldUser.UserId, Wc, null, null); OldUser.Permissions = NewUser.Permissions; OldUser.Roles = NewUser.Roles; OldUser.RoleIds = NewUser.RoleIds; OldUser.UserGroupIds = NewUser.UserGroupIds; this.Redis.Set <IUserAuth>(request.SolnId + ":" + OldUser.UserId + ":" + Wc, OldUser); this.ServiceStackClient.BearerToken = request.BToken; this.ServiceStackClient.RefreshToken = request.RToken; this.ServiceStackClient.RefreshTokenUri = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_GET_ACCESS_TOKEN_URL); this.ServiceStackClient.Post <NotifyByUserIDResponse>(new NotifyByUserIDRequest { Link = "/UserDashBoard", Title = $"Your roles was changed successfully", UsersID = OldUser.UserId, User_AuthId = OldUser.AuthId, BToken = request.BToken, RToken = request.RToken }); NotifyByUserAuthId(request.BToken, request.RToken, OldUser.AuthId, "User role changed successfully", "cmd.UpdateUserMenu"); } catch (Exception ex) { Console.WriteLine("user role changes-send notification" + ex.Message + ex.StackTrace); } }