some ezc functions from templates/item.cpp moved to Item and ItemContent

methods HasAccess() HasReadAccess() and similar moved from System to Item and ItemContent
This commit is contained in:
2021-06-18 19:18:13 +02:00
parent ebd791a256
commit ec94dff7d7
32 changed files with 1255 additions and 544 deletions

View File

@@ -606,69 +606,31 @@ return true;
}
// private
bool System::HasAccess(const Item & item, int mask)
{
if( !cur->session )
// session must be set
return false;
if( cur->session->puser && cur->session->puser->super_user )
// super user is allowed everything
return true;
if( cur->session->puser && item.item_content.user_id != -1 && cur->session->puser->id == item.item_content.user_id )
{
// the owner
return ((item.item_content.privileges >> 9) & mask) == mask;
}
if( cur->session->puser && item.item_content.group_id != -1 && cur->session->puser->IsMemberOf(item.item_content.group_id) )
{
// group
return ((item.item_content.privileges >> 6) & mask) == mask;
}
if( cur->session->puser )
{
// others -- others logged people
return ((item.item_content.privileges >> 3) & mask) == mask;
}
// guests -- not logged people
return (item.item_content.privileges & mask) == mask;
}
// DEPRACATED
bool System::HasReadAccess(const Item & item)
{
return HasAccess(item, 4);
return item.item_content.has_read_access();
}
// DEPRACATED
bool System::HasWriteAccess(const Item & item)
{
return HasAccess(item, 2);
return item.item_content.has_write_access();
}
// DEPRACATED
bool System::HasReadWriteAccess(const Item & item)
{
return HasAccess(item, 6); // r+w
return item.item_content.has_read_write_access();
}
// DEPRACATED
bool System::HasReadExecAccess(const Item & item)
{
if( cur->session && cur->session->puser && cur->session->puser->super_user )
{
// there must be at least one 'x' (for the root)
// !! CHECK ME: is it applicable to directories too?
return (item.item_content.privileges & 01111) != 0;
}
return HasAccess(item, 5); // r+x
return item.item_content.has_read_exec_access();
}