private List <SCIMUser> filterUsers(List <SCIMUser> users, SCIMFilter filter)
        {
            //System.Diagnostics.Debug.WriteLine(filter.FilterAttribute.AttributeName);
            logger.Debug("filterUsers type " + filter.FilterAttribute + " value " + filter.FilterValue);
            List <SCIMUser> filteredUsers = new List <SCIMUser>();
            string          criteria      = filter.FilterValue.Replace("\"", "");


            // simple attribute
            // dictionary attribute
            // equals query
            // or query

            if (filter.FilterType == SCIMFilterType.EQUALS)
            {
                if (filter.FilterAttribute.AttributeName == "userName")
                {
                    //check userName equals any existing users
                    foreach (var item in users)
                    {
                        if (item.userName == criteria)
                        {
                            filteredUsers.Add(item);
                        }
                    }
                }
            }

            return(filteredUsers);
        }
        public IHttpActionResult getAllUsers(string filter, int startIndex, int count)
        {
            logger.Debug("Enter getAllUsers by Filter ");
            SCIMFilter           f  = SCIMFilter.TryParse(filter);
            PaginationProperties pp = new PaginationProperties(count, startIndex);

            try
            {
                Okta.SCIM.Models.SCIMUserQueryResponse rGetUsers = connector.getUsers(pp, f);
                if (rGetUsers == null)
                {
                    logger.Debug("Exit no users not found");
                    return(NotFound());
                }
                else
                {
                    logger.Debug("Exit Successfully user found ");
                    return(Ok <SCIMUserQueryResponse>(rGetUsers));
                }
            }
            catch (EntityNotFoundException e)
            {
                logger.Debug("Exit entity not found trying to get user");
                return(NotFound());
            }
            catch (Exception e)
            {
                logger.Debug("Exit Error at getUser  ");
                logger.Error(e);
                return(InternalServerError(e));
            }
        }
Ejemplo n.º 3
0
        public IActionResult DisplayUsers()
        {
            SCIMFilter           myFilter = null;
            PaginationProperties pp       = new PaginationProperties(200, 1);

            cvs_SCIM20.Okta.SCIM.Models.SCIMUserQueryResponse rGetUsers = _connector.getUsers(pp, myFilter);
            _scimUsers = rGetUsers.Resources;

            return(View(_scimUsers));
        }
        public SCIMUserQueryResponse getUsers(PaginationProperties pageProperties, SCIMFilter filter)
        {
            logger.Debug("getUsers by filter ");
            int totalRecords = 0;

            try
            {
                //List<SCIMUser> uList = users.Values.ToList<SCIMUser>();

                List <SCIMUser> uList = _cacheService.GetAllSCIMUsers();
                List <SCIMUser> fList = null;

                if (filter != null)
                {
                    fList        = filterUsers(uList, filter);
                    totalRecords = fList.Count;
                }
                else
                {
                    totalRecords = uList.Count;
                }


                int startIndex  = pageProperties.startIndex > 0 && pageProperties.startIndex <= totalRecords ? pageProperties.startIndex : 1;
                int recordCount = startIndex + pageProperties.count <= totalRecords ? pageProperties.count : totalRecords - startIndex + 1;

                SCIMUserQueryResponse response = new SCIMUserQueryResponse();
                //response.schemas = userSchemas;
                response.schemas      = listResponseSchemas;
                response.totalResults = totalRecords;
                response.startIndex   = startIndex;
                response.itemsPerPage = recordCount;
                if (filter != null)
                {
                    response.Resources = fList.GetRange(startIndex - 1, recordCount);
                }
                else
                {
                    response.Resources = uList.GetRange(startIndex - 1, recordCount);
                }



                return(response);
            }
            catch (Exception e)
            {
                throw new OnPremUserManagementException("getUsers", e);
            }
        }
        public IHttpActionResult getBulkUsers()
        {
            logger.Debug("Enter getBulkUsers ");

            SCIMFilter           f  = new SCIMFilter();
            PaginationProperties pp = new PaginationProperties(200, 1);

            try
            {
                Okta.SCIM.Models.SCIMUserQueryResponse rGetUsers = connector.getUsers(pp, f);
                logger.Debug("Exit Successful getBulk Users ");
                return(Ok <SCIMUserQueryResponse>(rGetUsers));
            }
            catch (Exception e)
            {
                logger.Debug("Exit Error at getBulkUsers ");
                logger.Error(e);
                return(InternalServerError(e));
            }
        }
        public IActionResult getUsers([FromQuery] string filter, [RequiredFromQuery] int startIndex, [RequiredFromQuery] int count)
        {
            _logger.LogDebug("Enter getAllUsers by Filter ");
            SCIMFilter myFilter = null;

            if (!string.IsNullOrEmpty(filter))
            {
                myFilter = SCIMFilter.TryParse(filter);
            }


            PaginationProperties pp = new PaginationProperties(count, startIndex);

            try
            {
                cvs_SCIM20.Okta.SCIM.Models.SCIMUserQueryResponse rGetUsers = _connector.getUsers(pp, myFilter);
                if (rGetUsers == null)
                {
                    _logger.LogDebug("Exit no users not found");
                    return(NotFound());
                }
                else
                {
                    _logger.LogDebug("Exit Successfully user found ");
                    return(Ok(rGetUsers));
                }
            }
            catch (EntityNotFoundException e)
            {
                _logger.LogDebug("Exit entity not found trying to get user");
                return(NotFound());
            }
            catch (Exception e)
            {
                _logger.LogDebug("Exit Error at getUser  ");
                _logger.LogError(e.ToString());
                return(StatusCode(StatusCodes.Status500InternalServerError, e));
            }
        }