add some UI fixes for displaying Unauthorized features for Sub-Acc
parent
55f2567976
commit
428d17cf87
|
@ -7592,31 +7592,37 @@ module.exports = function(s,config,lang){
|
|||
label: `${lang['Monitor Settings']}`,
|
||||
pageOpen: 'monitorSettings',
|
||||
addUl: true,
|
||||
eval: `!$user.details.sub || $user.details.monitor_create !== 0`,
|
||||
},
|
||||
{
|
||||
icon: 'grav',
|
||||
label: `${lang['Region Editor']}`,
|
||||
pageOpen: 'regionEditor',
|
||||
eval: `!$user.details.sub`,
|
||||
},
|
||||
{
|
||||
icon: 'filter',
|
||||
label: `${lang['Event Filters']}`,
|
||||
pageOpen: 'eventFilters',
|
||||
eval: `!$user.details.sub`,
|
||||
},
|
||||
{
|
||||
icon: 'align-right',
|
||||
label: `${lang['Monitor States']}`,
|
||||
pageOpen: 'monitorStates',
|
||||
eval: `!$user.details.sub`,
|
||||
},
|
||||
{
|
||||
icon: 'clock',
|
||||
label: `${lang['Schedules']}`,
|
||||
pageOpen: 'schedules',
|
||||
eval: `!$user.details.sub`,
|
||||
},
|
||||
{
|
||||
icon: 'exclamation-triangle',
|
||||
label: `${lang['Logs']}`,
|
||||
pageOpen: 'logViewer',
|
||||
eval: `!$user.details.sub || $user.details.view_logs !== 0`,
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
|
@ -7625,6 +7631,7 @@ module.exports = function(s,config,lang){
|
|||
icon: 'gears',
|
||||
label: `${lang['Account Settings']}`,
|
||||
pageOpen: 'accountSettings',
|
||||
eval: `!$user.details.sub || $user.details.user_change !== 0`,
|
||||
addUl: true,
|
||||
},
|
||||
{
|
||||
|
@ -7632,6 +7639,7 @@ module.exports = function(s,config,lang){
|
|||
label: `${lang.subAccountManager}`,
|
||||
pageOpen: 'subAccountManager',
|
||||
addUl: true,
|
||||
eval: `!$user.details.sub`,
|
||||
},
|
||||
{
|
||||
icon: 'key',
|
||||
|
@ -7645,12 +7653,14 @@ module.exports = function(s,config,lang){
|
|||
icon: 'search',
|
||||
label: `${lang['ONVIF Scanner']}`,
|
||||
pageOpen: 'onvifScanner',
|
||||
addUl:true
|
||||
addUl:true,
|
||||
eval: `!$user.details.sub || $user.details.monitor_create !== 0`,
|
||||
},
|
||||
{
|
||||
icon: 'opera',
|
||||
label: `${lang['ONVIF Device Manager']}`,
|
||||
pageOpen: 'onvifDeviceManager',
|
||||
eval: `!$user.details.sub || $user.details.monitor_create !== 0`,
|
||||
},
|
||||
{
|
||||
icon: 'eyedropper',
|
||||
|
@ -7662,6 +7672,7 @@ module.exports = function(s,config,lang){
|
|||
label: `${lang['ShinobiHub']}`,
|
||||
pageOpen: 'configFinder',
|
||||
addUl: true,
|
||||
eval: `!$user.details.sub || $user.details.monitor_create !== 0`,
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
|
|
|
@ -1830,7 +1830,7 @@ module.exports = function(s,config,lang){
|
|||
'user_change',
|
||||
'view_logs',
|
||||
].forEach((key) => {
|
||||
response.userPermissions[key] = details[key] === '1';
|
||||
response.userPermissions[key] = details[key] === '1' || !details[key];
|
||||
response.userPermissions[`${key}_disallowed`] = details[key] === '0';
|
||||
});
|
||||
return response
|
||||
|
|
|
@ -298,9 +298,12 @@ module.exports = function(s,config,lang,app){
|
|||
}
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
s.auth(req.params,function(user){
|
||||
var hasRestrictions = user.details.sub && user.details.allmonitors !== '1'
|
||||
const groupKey = req.params.ke
|
||||
const monitorId = req.params.id
|
||||
const {
|
||||
monitorPermissions,
|
||||
monitorRestrictions,
|
||||
} = s.getMonitorsPermitted(user.details,monitorId)
|
||||
const {
|
||||
isRestricted,
|
||||
isRestrictedApiKey,
|
||||
|
|
|
@ -1208,6 +1208,10 @@ module.exports = function(s,config,lang,app,io){
|
|||
s.auth(req.params,function(user){
|
||||
const groupKey = req.params.ke
|
||||
const monitorId = req.params.id
|
||||
const {
|
||||
monitorPermissions,
|
||||
monitorRestrictions,
|
||||
} = s.getMonitorsPermitted(user.details,monitorId)
|
||||
const {
|
||||
isRestricted,
|
||||
isRestrictedApiKey,
|
||||
|
@ -1772,7 +1776,7 @@ module.exports = function(s,config,lang,app,io){
|
|||
isRestricted,
|
||||
isRestrictedApiKey,
|
||||
apiKeyPermissions,
|
||||
} = s.checkPermission(user)
|
||||
} = s.checkPermission(user);
|
||||
if(
|
||||
isRestrictedApiKey && apiKeyPermissions.delete_videos_disallowed ||
|
||||
isRestricted && !monitorPermissions[`${monitorId}_video_delete`]
|
||||
|
|
|
@ -209,13 +209,18 @@ $(document).ready(function(){
|
|||
permissionsSection.find('.permission-view select').each(function(n,v){
|
||||
var el = $(v)
|
||||
var monitorId = el.attr('monitor')
|
||||
var value = el.val()
|
||||
var value = el.val() // permissions selected
|
||||
$.each(value,function(n,permissionNameSelected){
|
||||
if(!foundSelected[permissionNameSelected])foundSelected[permissionNameSelected] = []
|
||||
foundSelected[permissionNameSelected].push(monitorId)
|
||||
})
|
||||
})
|
||||
details = Object.assign(details,foundSelected)
|
||||
details = Object.assign(details,{
|
||||
'monitors': [],
|
||||
'monitor_edit': [],
|
||||
'video_view': [],
|
||||
'video_delete': [],
|
||||
},foundSelected)
|
||||
detailsElement.val(JSON.stringify(details))
|
||||
}
|
||||
var getCompleteForm = function(){
|
||||
|
|
|
@ -59,7 +59,7 @@ $(document).ready(function(){
|
|||
<div class="d-block pt-4">
|
||||
<div class="btn-group btn-group-justified">
|
||||
<a class="btn btn-sm btn-success" download href="${videoUrl}"><i class="fa fa-download"></i> ${lang.Download}</a>
|
||||
<a class="btn btn-sm btn-danger delete-video"><i class="fa fa-trash-o"></i> ${lang.Delete}</a>
|
||||
${permissionCheck('video_delete',video.mid) ? `<a class="btn btn-sm btn-danger delete-video"><i class="fa fa-trash-o"></i> ${lang.Delete}</a>` : ''}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -158,7 +158,7 @@ $(document).ready(function(e){
|
|||
<a class="btn btn-sm btn-primary" href="${href}" download title="${lang.Download}"><i class="fa fa-download"></i></a>
|
||||
<a class="btn btn-sm btn-primary preview-video" href="${href}" title="${lang.Play}"><i class="fa fa-play"></i></a>
|
||||
<a class="btn btn-sm btn-default open-video" href="${href}" title="${lang.Play}"><i class="fa fa-play"></i></a>
|
||||
<a class="btn btn-sm btn-danger delete-video" href="${href}" title="${lang.Delete}"><i class="fa fa-trash-o"></i></a>
|
||||
${permissionCheck('video_delete',file.mid) ? `<a class="btn btn-sm btn-danger delete-video" href="${href}" title="${lang.Delete}"><i class="fa fa-trash-o"></i></a>` : ''}
|
||||
</div>
|
||||
`,
|
||||
}
|
||||
|
|
|
@ -37,23 +37,25 @@
|
|||
<ul id="pageTabLinks" class="nav flex-column nav-pills">
|
||||
<div class="pb-2 px-3" id="home-collapse">
|
||||
<% menuInfo.links.forEach((item) => {
|
||||
if(item.divider){ %>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<% }else{ %>
|
||||
<li class="nav-item" <%- item.attributes ? item.attributes : '' %> <%- item.pageOpen ? `id="side-menu-link-${item.pageOpen}"` : '' %>>
|
||||
<a class="nav-link side-menu-link <%- item.class %>" aria-current="page" <%- item.pageOpen ? `page-open="${item.pageOpen}"` : '' %>>
|
||||
<i class="fa fa-<%- item.icon %>"></i> <%- item.label %>
|
||||
</a>
|
||||
<% if(item.addUl){ %>
|
||||
<ul class="btn-default rounded btn-toggle-nav list-unstyled fw-normal ml-3 mt-2 px-2 pb-2 pt-1 <%- item.ulClass ? item.ulClass : '' %>">
|
||||
<% if(item.ulItems){
|
||||
item.ulItems.forEach((listItem) => { %>
|
||||
<li><a class="<%- define.Theme.isDark ? 'text-white' : 'text-dark' %> <%- listItem.class ? listItem.class : '' %>" <%- listItem.attributes ? listItem.attributes : '' %>><span class="dot dot-<%- listItem.color ? listItem.color : 'blue' %> shadow mr-2"></span><%- listItem.label ? listItem.label : 'Need Label' %></a></li>
|
||||
<% })
|
||||
} %>
|
||||
</ul>
|
||||
<% } %>
|
||||
</li>
|
||||
if(!item.eval || eval(item.eval)){
|
||||
if(item.divider){ %>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<% }else{ %>
|
||||
<li class="nav-item" <%- item.attributes ? item.attributes : '' %> <%- item.pageOpen ? `id="side-menu-link-${item.pageOpen}"` : '' %>>
|
||||
<a class="nav-link side-menu-link <%- item.class %>" aria-current="page" <%- item.pageOpen ? `page-open="${item.pageOpen}"` : '' %>>
|
||||
<i class="fa fa-<%- item.icon %>"></i> <%- item.label %>
|
||||
</a>
|
||||
<% if(item.addUl){ %>
|
||||
<ul class="btn-default rounded btn-toggle-nav list-unstyled fw-normal ml-3 mt-2 px-2 pb-2 pt-1 <%- item.ulClass ? item.ulClass : '' %>">
|
||||
<% if(item.ulItems){
|
||||
item.ulItems.forEach((listItem) => { %>
|
||||
<li><a class="<%- define.Theme.isDark ? 'text-white' : 'text-dark' %> <%- listItem.class ? listItem.class : '' %>" <%- listItem.attributes ? listItem.attributes : '' %>><span class="dot dot-<%- listItem.color ? listItem.color : 'blue' %> shadow mr-2"></span><%- listItem.label ? listItem.label : 'Need Label' %></a></li>
|
||||
<% })
|
||||
} %>
|
||||
</ul>
|
||||
<% } %>
|
||||
</li>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% }) %>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue