Files
nocode 5fafde5e31 feat(privileges): add admin permission management for announcement system
Register BladW announcement privilege with supported admin mods (SAM, ULX/ULib, FAdmin) and provide function to check player access rights. Supports multiple admin systems with fallback to base admin status.
2026-07-20 14:23:12 +02:00

55 lines
1.7 KiB
Lua

BladW = BladW or {}
BladW.Announcement = BladW.Announcement or {}
-- le droit géré par l'admin mod (SAM / ULX / FAdmin)
local PRIV = "bladw_announce"
BladW.Announcement.Privilege = PRIV
-- j'enregistre le droit dans l'admin mod présent, pour qu'il apparaisse dans son menu
local function Register()
-- SAM
if sam and sam.permissions and sam.permissions.add then
pcall(sam.permissions.add, PRIV, "BladW Annonce", "admin")
end
-- ULX / ULib
if ULib and ULib.ucl and ULib.ucl.registerAccess then
pcall(ULib.ucl.registerAccess, PRIV, "admin", "Gérer les annonces BladW", "BladW")
end
-- FAdmin (DarkRP) : 2 = admin
if FAdmin and FAdmin.Access and FAdmin.Access.AddPrivilege then
pcall(FAdmin.Access.AddPrivilege, PRIV, 2)
end
end
-- SAM veut qu'on (ré)enregistre ses permissions sur ce hook
hook.Add("SAM.LoadPermissions", "BladW:AnnouncePriv", Register)
-- les autres mods sont parfois chargés après le serveur -> on retente
hook.Add("InitPostEntity", "BladW:AnnouncePriv", Register)
-- et un coup direct au cas où le mod est déjà là (hot-reload)
Register()
-- est-ce que ce joueur a le droit de gérer les annonces ?
function BladW.Announcement.HasAccess(ply)
if not IsValid(ply) then return false end
-- SAM
if sam and sam.player and sam.player.has_permission then
return sam.player.has_permission(ply, PRIV)
end
-- ULX / ULib
if ULib and ULib.ucl and ULib.ucl.query then
return ULib.ucl.query(ply, PRIV)
end
-- FAdmin (DarkRP)
if FAdmin and FAdmin.Access and FAdmin.Access.PlayerHasPrivilege then
return FAdmin.Access.PlayerHasPrivilege(ply, PRIV)
end
-- pas d'admin mod -> on retombe sur l'admin de base
return ply:IsAdmin()
end