sheikh-k
4/9/2017 - 12:21 PM

User Privilages Tab Level work.html


<!----------------------------------------------- custom-javascript.js ----------------------------------------------->
<script>
var Permission = (function () {
    "use strict";
    var userPermissionJson = [];
    var permissionResult = {
        full: true,
        insert: true,
        view: true,
        edit: true,
        deletes: true,
        details: true,
        report: true
    };
    function getPermission(menu) {
        _.each(userPermissionJson, function (permission) {
            if (permission.MenuName == menu || permission.Url == menu) {
                permissionResult.full = permission.FullPermission;
                permissionResult.insert = permission.AddPermission;
                permissionResult.view = permission.ViewPermission;
                permissionResult.edit = permission.EditPermission;
                permissionResult.deletes = permission.DeletePermission;
                permissionResult.details = permission.DetailViewPermission;
                permissionResult.report = permission.ReportViewPermission;
            }
        });
        return permissionResult;
    }

    function getTabPermission(menu, id) {
        var permission = _.findWhere(userPermissionJson, { ParentId: id, MenuName: menu });
        if (permission) {
            permissionResult.full = permission.FullPermission;
            permissionResult.insert = permission.AddPermission;
            permissionResult.view = permission.ViewPermission;
            permissionResult.edit = permission.EditPermission;
            permissionResult.deletes = permission.DeletePermission;
            permissionResult.details = permission.DetailViewPermission;
            permissionResult.report = permission.ReportViewPermission;
        }
        return permissionResult;
    }
    var result = {};
    result.init = function (jsonData) {
        userPermissionJson = jsonData;
    }
    result.getPermission = function (menu) {
       return  getPermission(menu);
    }
    result.getTabPermission = function (menu, id) {
        return getTabPermission(menu, id);
    }
    return result;
}());

</script>




















<!----------------------------------------------- index.html ----------------------------------------------->

@using VelocityFinCrime.Entity
@model IEnumerable<MenuConfig>
 @{
     var defaultMenu= Model.FirstOrDefault(s => s.IsDefault)?? Model.First();
  }
@section Menu{
<ul class="sidebar-menu nav-list">
    @BuildMenu(Model)
</ul>
}
@helper BuildMenu(IEnumerable<MenuConfig> data, int? parentId = null)
{
var configs = data as IList<MenuConfig> ?? data.ToList();
var items = configs.Where(d => d.ParentId == parentId).OrderBy(i => i.MenuOrder);

if (!items.Any())
{
    return;
}
foreach (var item in items)
{
    var cssClass = item.IsDefault ? "active" : "";
    if (((item.Children == null || item.Children.Count == 0) && item.MenuType==MenuType.Module)|| item.MenuType == MenuType.Menu)
    {
            <li>
                <a Id="menu_@item.Id"
                   class="@cssClass"
                   data-menu-id="@item.Id"
                   data-ajax="true" 
                   data-ajax-begin="Spiner.show();" 
                   data-ajax-complete="OnAjaxRequestComplete(@item.Id)" 
                   data-ajax-method="GET" 
                   data-ajax-mode="replace" 
                   data-ajax-success="OnAjaxRequestSuccess('@item.MenuText')" 
                   data-ajax-update="#mainContent" href="@item.Url"> 
                   <i class="@item.Icon"></i><span>@item.MenuText</span>
                </a>
            </li>
        }
        else
        {
            <li class="treeview">
                <a href="#" class="@cssClass" data-menu-id="@item.Id">
                    <i class="@item.Icon"></i> <span>@item.MenuText</span>
                    <i class="fa fa-angle-left pull-right"></i>
                </a>
                <ul class="treeview-menu">
                    @BuildMenu(configs, item.Id)
                </ul>
            </li>
        }

    }
}
<div id="bodyContent">

    <div id="mainContent">

    </div>

    <div id="splash-page" class="spiner" style="display: none;"></div>
</div>
<div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
    <div class="modal-dialog">
        <div class="modal-content" id="modelContent">
        </div>
    </div>
</div>
@section scripts
{
<script src="~/Scripts/file-upload/jquery.fileupload.js" type="text/javascript"></script>
<script src="~/Scripts/file-upload/jquery.fileupload-ui.js" type="text/javascript"></script>
<script src="~/Scripts/file-upload/jquery.iframe-transport.js" type="text/javascript"></script>

    <script>
        var permissionJson = [];
        $(function() {
            if (@ViewBag.ExpiryDate < 10) {
                if (@ViewBag.ExpiryDate <= 0) {
                    bootbox.confirm("Your password is expired. Please Reset your password.",
                        function(result) {
                            if (result) {
                                window.location.href = '/changepassword';
                            } else {
                                window.location.href = '/Login/Logout';
                            }
                        });
                } else {
                    bootbox.alert({
                        message: "Your password will expire soon. Please Reset your password."
                    });
                    LoadDafultMenu();
                }
            } else {
                LoadDafultMenu();
            }
            if (localStorage.getItem("userprev") === null) {
                loadUserPrivileges();
            }
            permissionJson = JSON.parse(localStorage.getItem('userprev'));
            Permission.init(permissionJson);
        });

        function LoadDafultMenu() {
            $('#PageHeader').html('@defaultMenu.MenuText');
            loadLink('@defaultMenu.Url');
        }

        function loadUserPrivileges() {
            $.get( "api/security/user/permission", function( data ) {
                localStorage.setItem('userprev',JSON.stringify(data));
            });
        }
        $(document).on("mousemove",".btn",function (e) {
            e = e || window.event;
            var currentUser = localStorage.getItem('currentUser');
            var requestBy = $("#requestUserId").val();
            if (currentUser!=requestBy) {
                e.returnValue = false;
                if(e.preventDefault){
                    e.preventDefault();
                }
                if (e.stopImmediatePropagation()) {
                    e.stopImmediatePropagation();
                }
                window.location.href = "/Login/Logout";
                return false;
            }  else { return true; }
        });

        $('.nav-list li>a').on('click', function() {
            $('.nav-list li> a.active').removeClass('active');
            $(this).addClass('active');
        });

        function OnAjaxRequestSuccess(data) {
            $('#PageHeader').html(data);
        }
        function OnAjaxRequestComplete(id) {
            Spiner.hide();
            var aList = $("#mainContent").find('[role="tablist"]>li>a');
            $.each(aList,function(index, item) {
                var result = Permission.getTabPermission(item.innerHTML,id);
                if (!result.deletes&&!result.details&&!result.edit&&!result.view&&!result.report) {
                    $(item.getAttribute('href')).hide();
                    item.style.display='none';
                } 
                else {
                    $(item.getAttribute('href')).show();
                    $(item).show();

                }
                });
        }

    </script>
}