Пример #1
0
        /// <summary>
        /// 获取用户加群情况
        /// </summary>
        /// <param name="joinType">加群类型</param>
        /// <returns>该类型下所加群的列表</returns>
        public List <Dictionary <string, object> > RequestUserJoinedGroup(UserGroupType joinType)
        {
            try
            {
                var body   = string.Format("bkn={0}", BKN);
                var result = makeRequest(ApiType.RequestUserGroup.Value, body);
                switch (joinType)
                {
                case UserGroupType.Join:
                    return(PostResponse(result, "join"));

                case UserGroupType.Manage:
                    return(PostResponse(result, "manage"));

                default:
                    return(null);
                }
            }
            catch
            {
                return(null);
            }
        }
        private JsonResult GetUserGroups([DataSourceRequest] DataSourceRequest request, string ownerLevel, string ownerId, UserGroupType userGroupType)
        {
            var oLevel       = ownerLevel.ToEnum <OwnerLevel>();
            var accessLevels = new AccessLevel[] { AccessLevel.Contributor, AccessLevel.FullAccess };
            var userQuery    = _userGroupManager.GetUserGroupsAssignedToUserWithAccessLevelQuery(ownerId, accessLevels, userGroupType);
            var ownerQuery   = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(oLevel, ownerId, userGroupType);

            var userResults  = userQuery.ToDataSourceResult(request);
            var ownerResults = ownerQuery.ToDataSourceResult(request);

            // note that the ToDataSourceResult function has issues with IQuereiables resulting from a Union function.
            var list = new List <UserGroup>();

            list.AddRange(userResults.Data.Cast <UserGroup>());
            foreach (UserGroup item in ownerResults.Data)
            {
                if (!list.Where(x => x.Id == item.Id).Any())
                {
                    list.Add(item);
                }
            }

            var result = list.ToDataSourceResult(request);

            return(Json(result));
        }
Пример #3
0
        private IEnumerable <UserGroup> GetUserGroupsOfUserContributor(DataSourceRequest request, UserGroupType userGroupType, UserContext userContext, OwnerLevel viewLevel)
        {
            var siteContext  = _siteContextAccessor.GetContext();
            var accessLevels = new AccessLevel[] { AccessLevel.Contributor, AccessLevel.FullAccess };
            var list         = new List <UserGroup>();

            // Get the client and site groups that the user has a membership to.
            var userQuery   = _userGroupManager.GetUserGroupsAssignedToUserWithAccessLevelQuery(userContext.UserId, accessLevels, userGroupType);
            var userResults = userQuery.ToDataSourceResult(request);

            list.AddRange(userResults.Data.Cast <UserGroup>());

            // Get the groups that have been created by this user
            var ownerQuery   = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.User, userContext.UserId, userGroupType);
            var ownerResults = ownerQuery.ToDataSourceResult(request);

            list.AddRange(ownerResults.Data.Cast <UserGroup>());

            var corpId = new CorpGlobalClaimValueResolver().Resolve();

            if (viewLevel.Equals(OwnerLevel.Client))
            {
                // Get the client groups if the user has that claim
                if (userContext.SecurityClaims.Find(ClientClaimTypes.AppNotificationsSend, siteContext.Client.Id) ||
                    userContext.SecurityClaims.Find(ClientClaimTypes.AppNotificationsSend, corpId) ||
                    userContext.SecurityClaims.Find(ClientClaimTypes.PrimaryAdmin, siteContext.Client.Id) ||
                    userContext.SecurityClaims.Find(ClientClaimTypes.PrimaryAdmin, corpId) ||
                    userContext.SecurityClaims.Find(CorpClaimTypes.CorpPrimaryAdmin, corpId))
                {
                    var clientQuery   = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.Client, siteContext.Client.Id, userGroupType);
                    var clientResults = clientQuery.ToDataSourceResult(request);
                    list.AddRange(clientResults.Data.Cast <UserGroup>());
                }
            }

            if (viewLevel.Equals(OwnerLevel.Site))
            {
                // Get the site groups if the user has that claim
                if (userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, siteContext.Client.Id) ||
                    userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, siteContext.SiteId) ||
                    userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, corpId) ||
                    userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, siteContext.Client.Id) ||
                    userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, siteContext.SiteId) ||
                    userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, corpId) ||
                    userContext.SecurityClaims.Find(CorpClaimTypes.CorpPrimaryAdmin, corpId))
                {
                    var siteQuery   = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.Site, siteContext.SiteId, userGroupType);
                    var siteResults = siteQuery.ToDataSourceResult(request);
                    list.AddRange(siteResults.Data.Cast <UserGroup>());
                }
            }

            var list2 = list.GroupBy(x => x.Id).Select(x => x.First());

            return(list2.OrderBy(x => x.Name).ToList());
        }
Пример #4
0
 public IHttpActionResult GetUserGroup(UserGroupType userGroupType)
 {
     return(Ok(SetUpService.GetUserGroup(userGroupType)));
 }
Пример #5
0
        public IQueryable <UserGroup> GetUserGroupsAssignedToUserWithAccessLevelQuery(string userId, AccessLevel[] accessLevels, UserGroupType userGroupType)
        {
            var memberships = _connectDb.UserGroupMemberships.AsNoTracking()
                              .Where(x => x.UserId == userId)
                              .Where(x => accessLevels.Contains(x.AccessLevel));

            var assignedGroups = _connectDb.UserGroups.AsNoTracking()
                                 .Where(x => x.UserGroupType == userGroupType)
                                 .Join(memberships,
                                       g => g.Id,
                                       m => m.UserGroupId,
                                       (ug, gm) => ug
                                       );

            return(assignedGroups);
        }
Пример #6
0
        public IQueryable <UserGroup> GetUserGroupsOfOwnerAndTypeQuery(string ownerId, UserGroupType userGroupType)
        {
            var query = _connectDb.UserGroups.Where(x => (x.OwnerId == ownerId) && (x.UserGroupType == userGroupType));

            return(query);
        }
Пример #7
0
        public async Task <List <UserGroupMembership> > GetPublicUserGroupsForUserAndSiteAsync(string userId, string siteId, UserGroupType userGroupType)
        {
            var memberships = await _connectDb.UserGroupMemberships.AsNoTracking()
                              .Where(m => m.UserId == userId)
                              .Join(_connectDb.UserGroups.AsNoTracking()
                                    .Where(g => (g.OwnerId == siteId) &&
                                           (g.OwnerLevel == OwnerLevel.Site) &&
                                           (g.UserGroupType == userGroupType)),
                                    m => m.UserGroupId,
                                    g => g.Id,
                                    (m, g) => new UserGroupMembership()
            {
                UserGroupId         = m.UserGroupId,
                UserId              = m.UserId,
                AllowEmailMessaging = m.AllowEmailMessaging,
                AllowSmsMessaging   = m.AllowSmsMessaging,
                UserGroup           = new UserGroup()
                {
                    Id   = g.Id,
                    Name = g.Name,
                    AllowPublicEnrollment = g.AllowPublicEnrollment,
                    UserGroupType         = g.UserGroupType
                }
            }).ToListAsync();

            var allGroups = await _connectDb.UserGroups.AsNoTracking()
                            .Where(g => (g.OwnerId == siteId) &&
                                   (g.OwnerLevel == OwnerLevel.Site) &&
                                   (g.AllowPublicEnrollment == true) &&
                                   (g.UserGroupType == userGroupType))
                            .OrderBy(g => g.Name)
                            .ToListAsync();

            // Add public groups that the user is not currently assigned to.
            foreach (var group in allGroups)
            {
                var curMembership = memberships.Where(m => m.UserGroupId == group.Id).FirstOrDefault();
                if (curMembership == null)
                {
                    memberships.Add(new UserGroupMembership()
                    {
                        UserId              = null, // null will indicate that this user does not belong to this group.
                        UserGroupId         = group.Id,
                        AllowEmailMessaging = false,
                        AllowSmsMessaging   = false,
                        UserGroup           = group
                    });
                }
            }

            return(memberships);
        }
Пример #8
0
        public async Task <List <UserGroup> > GetPublicUserGroupsForSiteAsync(string siteId, UserGroupType userGroupType)
        {
            var site = await _siteManager.GetByIdAsync(siteId);

            var siteGroups = await _connectDb.UserGroups.AsNoTracking()
                             .Where(g => (g.OwnerId == siteId) &&
                                    (g.OwnerLevel == OwnerLevel.Site) &&
                                    (g.AllowPublicEnrollment == true) &&
                                    (g.UserGroupType == userGroupType))
                             .ToListAsync();

            var clientGroups = await _connectDb.UserGroups.AsNoTracking()
                               .Where(g => (g.OwnerId == site.ClientId) &&
                                      (g.OwnerLevel == OwnerLevel.Client) &&
                                      (g.AllowPublicEnrollment == true) &&
                                      (g.UserGroupType == userGroupType))
                               .ToListAsync();

            var publicGroups = new List <UserGroup>();

            publicGroups.AddRange(siteGroups);
            publicGroups.AddRange(clientGroups);

            return(publicGroups.OrderBy(g => g.Name).ToList());
        }
Пример #9
0
 public async Task <IHttpActionResult> UserGroupGet(UserGroupType id)
 {
     return(Ok(await WebApiService.Instance.GetAsync <UserGroupParentViewModel>($"setup/usergroup/get?usergrouptype={id}")));
 }