Move export permission check to LLPermissions, try two.
Removes code duplication. Several parts of the code ignored the PERM_EXPORT but and still did demand that things are full perm next to being a creator. This has now changed the export rules are the same for everything as they were for mesh: you need to be the owner and the creator for every element that is exported (not just the root prim, of course).
This commit is contained in:
@@ -1098,3 +1098,9 @@ LLPermissions ll_permissions_from_sd(const LLSD& sd_perm)
|
||||
rv.fix();
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool LLPermissions::allowExportBy(LLUUID const& requester, bool supports_export) const
|
||||
{
|
||||
return !mIsGroupOwned && requester == mOwner && (requester == mCreator || (supports_export && (mMaskEveryone & PERM_EXPORT)));
|
||||
}
|
||||
|
||||
|
||||
@@ -275,6 +275,13 @@ public:
|
||||
inline bool allowCopyBy(const LLUUID& agent_id, const LLUUID& group) const;
|
||||
inline bool allowMoveBy(const LLUUID &agent_id, const LLUUID &group) const;
|
||||
|
||||
// Returns true if export is allowed.
|
||||
// If a grid supports PERM_EXPORT then they should also check if (any) element
|
||||
// has that bit set and allow exporting even when this function returns false,
|
||||
// or pass supports_export as true, which causes to perform that check using
|
||||
// these permissions.
|
||||
bool allowExportBy(LLUUID const& requester, bool supports_export = false) const;
|
||||
|
||||
// This somewhat specialized function is meant for testing if the
|
||||
// current owner is allowed to transfer to the specified agent id.
|
||||
inline bool allowTransferTo(const LLUUID &agent_id) const;
|
||||
|
||||
Reference in New Issue
Block a user