mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
140 lines
3.5 KiB
Lua
140 lines
3.5 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
local meta = FindMetaTable( "Player" )
|
|
if ( not meta ) then return end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: IsAdmin
|
|
Desc: Returns if a player is an admin.
|
|
-----------------------------------------------------------]]
|
|
function meta:IsAdmin()
|
|
|
|
if ( self:IsSuperAdmin() ) then return true end
|
|
if ( self:IsUserGroup( "admin" ) ) then return true end
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: IsSuperAdmin
|
|
Desc: Returns if a player is a superadmin.
|
|
-----------------------------------------------------------]]
|
|
function meta:IsSuperAdmin()
|
|
|
|
return self:IsUserGroup( "superadmin" )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: IsUserGroup
|
|
Desc: Returns if a player is in the specified usergroup.
|
|
-----------------------------------------------------------]]
|
|
function meta:IsUserGroup( name )
|
|
|
|
if ( not self:IsValid() ) then return false end
|
|
|
|
return self:GetUserGroup() == name
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: GetUserGroup
|
|
Desc: Returns the player's usergroup.
|
|
-----------------------------------------------------------]]
|
|
function meta:GetUserGroup()
|
|
|
|
return self:GetNWString( "UserGroup", "user" )
|
|
|
|
end
|
|
|
|
|
|
--[[---------------------------------------------------------
|
|
This is the meat and spunk of the player auth system
|
|
-----------------------------------------------------------]]
|
|
|
|
if ( not SERVER ) then return end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: SetUserGroup
|
|
Desc: Sets the player's usergroup. ( Serverside Only )
|
|
-----------------------------------------------------------]]
|
|
function meta:SetUserGroup( name )
|
|
|
|
self:SetNWString( "UserGroup", name )
|
|
|
|
end
|
|
|
|
|
|
-- SteamIds table..
|
|
-- STEAM_0:1:7099:
|
|
-- name = garry
|
|
-- group = superadmin
|
|
|
|
local SteamIDs = {}
|
|
|
|
local function LoadUsersFile()
|
|
|
|
local txt = file.Read( "settings/users.txt", "MOD" )
|
|
if ( not txt ) then MsgN( "Failed to load settings/users.txt!" ) return end
|
|
|
|
-- Load the users file
|
|
local UsersKV = util.KeyValuesToTable( txt )
|
|
if ( not UsersKV ) then MsgN( "Failed to parse settings/users.txt!" ) return end
|
|
|
|
SteamIDs = {}
|
|
|
|
-- Extract the data into the SteamIDs table
|
|
for key, tab in pairs( UsersKV ) do
|
|
for name, steamid in pairs( tab ) do
|
|
SteamIDs[ steamid ] = {}
|
|
SteamIDs[ steamid ].name = name
|
|
SteamIDs[ steamid ].group = key
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
LoadUsersFile()
|
|
|
|
function util.GetUserGroups()
|
|
|
|
return SteamIDs
|
|
|
|
end
|
|
|
|
hook.Add( "PlayerInitialSpawn", "PlayerAuthSpawn", function( ply )
|
|
|
|
local steamid = ply:SteamID()
|
|
|
|
if ( game.SinglePlayer() or ply:IsListenServerHost() ) then
|
|
ply:SetUserGroup( "superadmin" )
|
|
return
|
|
end
|
|
|
|
if ( SteamIDs[ steamid ] == nil ) then
|
|
ply:SetUserGroup( "user" )
|
|
return
|
|
end
|
|
|
|
-- Admin SteamID need to be fully authenticated by Steam!
|
|
if ( ply.IsFullyAuthenticated and not ply:IsFullyAuthenticated() ) then
|
|
ply:ChatPrint( string.format( "Hey '%s' - Your SteamID wasn't fully authenticated, so your usergroup has not been set to '%s'.", SteamIDs[ steamid ].name, SteamIDs[ steamid ].group ) )
|
|
ply:ChatPrint( "Try restarting Steam." )
|
|
return
|
|
end
|
|
|
|
ply:SetUserGroup( SteamIDs[ steamid ].group )
|
|
ply:ChatPrint( string.format( "Hey '%s' - You're in the '%s' group on this server.", SteamIDs[ steamid ].name, SteamIDs[ steamid ].group ) )
|
|
|
|
end )
|