mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
139
lua/includes/extensions/player_auth.lua
Normal file
139
lua/includes/extensions/player_auth.lua
Normal file
@@ -0,0 +1,139 @@
|
||||
--[[
|
||||
| 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 )
|
||||
Reference in New Issue
Block a user