Определение двух сеток по умолчанию:
initialise(){
$("#ExpenseTable").jqGrid({
datatype : "local",
mtype : 'GET',
colModel : [ {name:'expnsId',label:'ID', width:150 },
{name:'userName',label:'NAME', width:150 },
{name:'catName',label:'CATEGORY', width:150 },
{name:'date',label:'DATE', width:150 },
{name:'amount',label:'AMOUNT', width:150 },
{name:'status',label:'STATUS', width:150 }],
pager : '#ExpPager',
rowNum : 10,
rowList : [ 10, 20, 30 ],
sortname : 'invid',
sortorder : 'desc',
viewrecords : true,
autowidth : false,
caption : 'Expenses Details',
onSelectRow : function(expnsId) { dispExpensData(expnsId); }
});
$("#tabs").tabs();
getTokens();//Gets the tokens for the logged in user.
refreshExpenseGrid();//Populates data to the grid
dispLeaveGrid();// It ll call the next default grid
}
}
$("#LeaveTable").jqGrid({
datatype : "local",
mtype : 'GET',
colModel : [ {name:'leaveId',label:'ID', width:150 },
{name:'userName',label:'NAME', width:150 },
{name:'fdate',label:'DATE', width:150 },
{name:'tdate',label:'DATE', width:150 }
{name:'status',label:'STATUS', width:150 }],
pager : '#ExpPager',
rowNum : 10,
rowList : [ 10, 20, 30 ],
sortname : 'invid',
sortorder : 'desc',
viewrecords : true,
autowidth : false,
caption : 'Leave Applications',
onSelectRow : function(leaveId) { displeaveData(leaveId); }
});
refreshLeaveGrid();//Populates data to the grid
securedUI();//This ll call the below function, to check whether the remaining tabs can be visible or not
Функция защищенного интерфейса:
function securedUI(){
var secToken = "DELETEUSER";
if(!checkRoleToken(secToken)){//If users dont have token to delete user, the buttons ll be disabled
$('#expDelete').attr('disabled', 'disabled');
$('#lveDelete').attr('disabled', 'disabled');
$('#delUser').attr('disabled', 'disabled');
$('#roleDel').attr('disabled', 'disabled');
$('#tokenDel').attr('disabled', 'disabled');
}
var secToken= "VIEWUSER";
if(checkRoleToken(secToken)){
showUserdetails();//3rd Grid Defn:Contains the table definition for user grid.
initialiseRole();//4th Grid Defn: Role grid
showtokens();//5th Grid Defn: token grid
}
Проверить токен:
function checkRoleToken(newToken){
for( var i = 0; i<tokens.length; i++ ){
var token = tokens[i];//Tokens is like cache, which contains all the tokens that are assigned for the current user.
if(newToken == token.tokenName){
return true;
}
}
return false;
}
HTML-страница:
<script type="text/javascript">
$(document).ready(function() {
initialise();
});
</script>
LeaveTable
- это вторая сетка, и у меня есть еще 3 сетки. Но я не хочу показывать их всем пользователям, вместо этого администраторы должны видеть их. Токены являются ключом к обнаружению, что пользователь имеет право выполнять любые операции в Приложении. Токены, которые назначены пользователю, будут загружены в кэш на стороне клиента, например, массив tokens
.
Каждая функция, такая как ADD
, DELETE
, UPDATE
& VIEW
, имеет свои токены в начале функции, которые хранятся в переменной. Эта переменная токена будет отправлена на CheckToken()
в качестве аргумента. Там он проверит этот токен по отношению к кешу токена. Он вернет true
или false
. Операция будет отменена или продолжена в соответствии с этим результатом.
В приведенном выше коде в конце определения сетки LeaveTable вы можете увидеть вызов функции securedUI();
. Внутри этой функции я делаю две вещи. 1. Отключение кнопок удаления, 2. Отключение сеток 3rd
, 4th
и 5th
для тех, у кого нет токенов DELETEUSER
& VIEWUSER
.
На самом деле то, что я получаю сейчас, - сетки 3rd
, 4th
и 5th
не отображаются для тех, кто имеет токен VIEWUSER
. Посмотрите на функции securedUI()
& checkToken()
, что они должны делать !!! У securedUI () есть токен VIEWUSER
и текущий пользователь, поэтому checkToken () должен возвращать true, поэтому он должен войти в блок if и выполнить вызовы функций внутри блока if. Но это не так. Я не могу понять, где я ошибаюсь.
Итак, я включил firebug и проверил его шаг за шагом. Как ни странно, теперь он входит в блок if и показывает сетку для пользователей-администраторов. Теперь я почувствовал, что это сработало, затем я выключил firebug и перезагрузил страницу снова. Ой, опять же, что 3 оставшиеся сетки не отображаются. Можете ли вы сейчас получить представление о моей проблеме !!!
Любые предложения !!!