Exemple #1
0
        /// <summary>
        /// Get the list of application group roles for the user
        /// </summary>
        /// <param name="userId">The id of the user</param>
        /// <returns></returns>
        public IQueryable <ApplicationGroupRole> GetUserGroupRoles(string userId)
        {
            var groupRoles = new List <ApplicationGroupRole>();

            using (var conn = new MySqlConnection(_connectionString))
            {
                var parameters = new Dictionary <string, object>
                {
                    { "@ApplicationUserId", userId }
                };
                var reader = MySqlHelper.ExecuteReader(conn, CommandType.Text,
                                                       @"SELECT r.Id, gr.ApplicationGroupId FROM aspnetroles r 
                    INNER JOIN applicationgrouproles gr
	                    ON gr.RoleId = r.Id
                    INNER JOIN applicationusergroups ug
	                    ON ug.ApplicationGroupId = gr.ApplicationGroupId
                        AND ApplicationUserId = @ApplicationUserId;",
                                                       parameters);

                while (reader.Read())
                {
                    var groupRole = new ApplicationGroupRole();
                    groupRole.RoleId             = reader[0].ToString();
                    groupRole.ApplicationGroupId = reader[1].ToString();

                    groupRoles.Add(groupRole);
                }
            }
            return(groupRoles.AsQueryable());
        }
        public ActionResult Add(string id)
        {
            var groupRole = new ApplicationGroupRole();

            groupRole.ApplicationGroupId = id;
            return(PartialView("Add", groupRole));
        }
Exemple #3
0
        public List <ApplicationGroupRole> PopulateGroupRoles(string groupId)
        {
            var groupRoles = new List <ApplicationGroupRole>();

            using (var conn = new MySqlConnection(_connectionString))
            {
                var parameters = new Dictionary <string, object>
                {
                    { "@groupId", groupId }
                };

                var reader = MySqlHelper.ExecuteReader(conn, CommandType.Text,
                                                       @"SELECT ApplicationGroupId,RoleId FROM applicationgrouproles WHERE ApplicationGroupId = @groupId",
                                                       parameters);
                while (reader.Read())
                {
                    var groupRole = new ApplicationGroupRole();
                    groupRole.ApplicationGroupId = reader[0].ToString();
                    groupRole.RoleId             = reader[1].ToString();
                    groupRoles.Add(groupRole);
                }
            }
            return(groupRoles);
        }
        public async Task <ActionResult> Add([Bind(Include = "ApplicationGroupId, ApplicationRoleId")] ApplicationGroupRole groupRole)
        {
            var roles = await GroupManager.AddGroupRoleAsync(groupRole.ApplicationGroupId, groupRole.ApplicationRoleId);

            return(Json(new { Success = true }));
        }
        public async Task <ApplicationGroup> SaveGroup(JObject group)
        {
            dynamic          groupDto = group;
            ApplicationGroup applicationGroup;
            bool             isNew             = groupDto.IsNew;
            JArray           sremovedListArray = groupDto.RemovedList;
            var    removedList    = sremovedListArray.ToObject <List <int> >();
            JArray addedListArray = groupDto.AddedList;
            var    addedList      = addedListArray.ToObject <List <int> >();

            if (!isNew)
            {
                applicationGroup = new ApplicationGroup()
                {
                    Id = groupDto.Id
                };
                applicationGroup = await _securityContext.Groups.FindAsync(applicationGroup.Id);

                if (applicationGroup == null)
                {
                    throw new KhodkarInvalidException(LanguageManager.ToAsErrorMessage(ExceptionKey.GroupNotFound));
                }
            }
            else
            {
                applicationGroup = new ApplicationGroup();
                _securityContext.Groups.Add(applicationGroup);
            }



            applicationGroup.Name        = groupDto.Name;
            applicationGroup.IsLeaf      = groupDto.IsLeaf;
            applicationGroup.Description = groupDto.Description;
            try
            {
                applicationGroup.Order = groupDto.Order;
            }
            catch (Exception)
            {
                applicationGroup.Order = 0;
            }

            applicationGroup.Status = groupDto.Status;

            try
            {
                int parentId = groupDto.ParentId;
                if (applicationGroup.ParentId != parentId)
                {
                    var parentCode = await _securityContext.Groups.FindAsync(parentId);

                    if (parentCode == null)
                    {
                        throw new KhodkarInvalidException(
                                  LanguageManager.ToAsErrorMessage(ExceptionKey.ParentRecordNotFound));
                    }
                    AuthorizeManager.CheckParentNodeModifyAccessForAddingChildNode(parentCode, parentCode.Id);
                }
                applicationGroup.ParentId = parentId;
            }
            catch (KhodkarInvalidException)
            {
                throw;
            }
            catch (Exception)
            {
                applicationGroup.ParentId = null;
            }

            AuthorizeManager.SetAndCheckModifyAndAccessRole(applicationGroup, groupDto);

            foreach (var item in addedList)
            {
                var role = new ApplicationGroupRole()
                {
                    GroupId = applicationGroup.Id,
                    RoleId  = item
                };
                _securityContext.ApplicationGroupRoles.Add(role);
            }

            if (removedList.Count > 0)
            {
                _securityContext.ApplicationGroupRoles.Where(
                    eg => removedList.Contains(eg.RoleId) && eg.GroupId == applicationGroup.Id).Delete();
            }

            await _securityContext.SaveChangesAsync();


            CacheManager.Remove(CacheManager.GetGroupKey(CacheKey.Aspect.ToString(), applicationGroup.Id));

            return(applicationGroup);
        }