Ejemplo n.º 1
0
        private void Init(int selUserId, int userId, int appId)
        {
            var response = new UserManager().GetUserMenuResponses(userId, appId, selUserId);
            var args     = new UserPermissionsResponseModel {
                UserId = response.UserId, AllPermissions = response.AllPermissions, CurrentPermissions = response.CurrentPermissions
            };
            var treeNodes = GetTreeNodes(args);

            this.TreeNodesJson = JsonConvert.SerializeObject(treeNodes);
        }
Ejemplo n.º 2
0
        private static ICollection <UserPermissionTreeNode> GetTreeNodes(UserPermissionsResponseModel model)
        {
            ICollection <UserPermissionTreeNode> allTreeNodes = new List <UserPermissionTreeNode>();

            if (model.AllPermissions != null)
            {
                Map(model.AllPermissions, allTreeNodes);
            }

            ICollection <UserPermissionTreeNode> roleTreeNodes = new List <UserPermissionTreeNode>();

            if (model.CurrentPermissions != null)
            {
                Map(model.CurrentPermissions, roleTreeNodes);
            }

            var intersectNodes = allTreeNodes.Intersect(roleTreeNodes, new UserPermissionTreeNodeEqualityComparer()).ToList();

            Parallel.ForEach(intersectNodes, node =>
            {
                node.Checked  = true;
                node.Open     = true;
                node.Disabled = false;
            });

            var allExceptRoleNodes = allTreeNodes.Except(roleTreeNodes, new UserPermissionTreeNodeEqualityComparer()).ToList();

            Parallel.ForEach(allExceptRoleNodes, node =>
            {
                node.Checked  = false;
                node.Open     = false;
                node.Disabled = false;
            });

            var roleExceptAllNodes = roleTreeNodes.Except(allTreeNodes, new UserPermissionTreeNodeEqualityComparer()).ToList();

            Parallel.ForEach(roleExceptAllNodes, node =>
            {
                node.Checked  = true;
                node.Open     = true;
                node.Disabled = true;
            });

            var treeNodes = intersectNodes.Concat(allExceptRoleNodes).Concat(roleExceptAllNodes).ToList();

            return(treeNodes);
        }
Ejemplo n.º 3
0
        ///////////////////////////////////////
        public UserPermissionsResponseModel GetUserMenuResponses(int userId, int appId, int selUserId)
        {
            var ulistAll = GetMenuAndFunctionByUserId(userId, appId);
            var rlistAll = GetMenuAndFunctionByChkUserId(selUserId, appId);

            UserManagerDb.GetRolesByUserId(selUserId).ForEach(o =>
            {
                rlistAll.AddRange(GetMenuAndFunctionByRoleId(o.RoleId, appId));
            });
            rlistAll = rlistAll.Distinct().ToList();
            //GetMenuAndFunctionByRoleId(selUserId,appId);
            var responseModel = new UserPermissionsResponseModel
            {
                AllPermissions     = ulistAll,
                CurrentPermissions = rlistAll,
                UserId             = userId
            };

            return(responseModel);
        }
Ejemplo n.º 4
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "Permissions/{parameter}")] HttpRequest req,
            string parameter, ILogger log)
        {
            var correlationId = req.Headers.Any(r => r.Key == "x-correlation-id")
                ? req.Headers["x-correlation-id"].ToString()
                : string.Empty;

            var accessToken = req.Headers.Any(r => r.Key == "x-access-token")
                ? req.Headers["x-access-token"].ToString()
                : string.Empty;

            if (string.IsNullOrEmpty(accessToken))
            {
                return(new ObjectResult($"Missing Access Token. Correlation ID: {correlationId}")
                {
                    StatusCode = StatusCodes.Status401Unauthorized,
                });
            }

            if (string.IsNullOrEmpty(parameter))
            {
                return(new BadRequestObjectResult($"Missing parameters. Correlation ID: {correlationId}"));
            }

            try
            {
                var userDetails = await AzTokenController.Instance.GetTokenDetails(accessToken);

                var isValidAccessToken = userDetails != null && !string.IsNullOrEmpty(userDetails.UserPrincipalName);

                if (!isValidAccessToken)
                {
                    return(new ObjectResult($"Invalid access token provided. Correlation ID: {correlationId}")
                    {
                        StatusCode = StatusCodes.Status401Unauthorized,
                    });
                }

                var cosmosDbController = new CosmosDbController();

                var userRolesPermissions = await cosmosDbController.GetUserRolesPermissions(userDetails);

                if (userRolesPermissions == null)
                {
                    return new ObjectResult($"No permissions defined for the specified token. Correlation Id: { correlationId}")
                           {
                               StatusCode = StatusCodes.Status401Unauthorized,
                           }
                }
                ;

                var inputPermissions = parameter.Split(',');

                var response = new UserPermissionsResponseModel()
                {
                    UserId        = userRolesPermissions.Key,
                    CorrelationId = correlationId,
                    Timestamp     = DateTime.Now.ToString(CultureInfo.InvariantCulture),
                    Permissions   = new List <PermissionResponseModel>()
                };

                foreach (var role in inputPermissions)
                {
                    response.Permissions.Add(userRolesPermissions.Permissions.Any(g => g.Key == role)
                        ? new PermissionResponseModel {
                        Key = role, IsAuthorized = true
                    }
                        : new PermissionResponseModel {
                        Key = role, IsAuthorized = false
                    });
                }

                return(new JsonResult(response));
            }
            catch (Exception exception)
            {
                log.LogError(exception.ToString());
                return(new ObjectResult(
                           $"Error occured. Please contact the system administrator. Correlation ID: {correlationId}")
                {
                    StatusCode = StatusCodes.Status500InternalServerError,
                });
            }
        }