[MAJOR CHANGE] Admin rank datum (#17133)

* Admin ranks update

* Permissions fix

* One missing thing

* Further rework to make database also fully work

* Adds admin rank bitflag calculator to tools

* ZA WARUDO

---------

Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
Selis
2025-03-06 01:38:19 +01:00
committed by GitHub
parent caec59322e
commit 7a7ae89713
88 changed files with 1993 additions and 904 deletions
-1
View File
@@ -40,7 +40,6 @@
show_verb_panel = FALSE
///Contains admin info. Null if client is not an admin.
var/datum/admins/holder = null
var/datum/admins/deadmin_holder = null
var/buildmode = 0
///Contains the last message sent by this client - used to protect against copy-paste spamming.
+3 -3
View File
@@ -260,7 +260,7 @@
GLOB.mhelp_tickets.ClientLogin(src)
//Admin Authorisation
holder = admin_datums[ckey]
holder = GLOB.admin_datums[ckey]
if(holder)
GLOB.admins += src
holder.owner = src
@@ -465,7 +465,7 @@
var/admin_rank = "Player"
if(src.holder)
admin_rank = src.holder.rank
admin_rank = src.holder.rank_names()
var/sql_ip = sql_sanitize_text(src.address)
var/sql_computerid = sql_sanitize_text(src.computer_id)
@@ -475,7 +475,7 @@
//Panic bunker code
if (isnum(player_age) && player_age == 0) //first connection
if (CONFIG_GET(flag/panic_bunker) && !holder && !deadmin_holder)
if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[key])
log_adminwarn("Failed Login: [key] - New account attempting to connect during panic bunker")
message_admins(span_adminnotice("Failed Login: [key] - New account attempting to connect during panic bunker"))
disconnect_with_message("Sorry but the server is currently not accepting connections from never before seen players.")
@@ -60,7 +60,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
continue
if(instance.ckeys_allowed && (!client || !(client.ckey in instance.ckeys_allowed)))
continue
if(instance.species_allowed && (!species || !(species in instance.species_allowed)) && (!client || !check_rights(R_ADMIN | R_EVENT | R_FUN, 0, client)) && (!custom_base || !(custom_base in instance.species_allowed)))
if(instance.species_allowed && (!species || !(species in instance.species_allowed)) && (!client || !check_rights_for(client, R_ADMIN | R_EVENT | R_FUN)) && (!custom_base || !(custom_base in instance.species_allowed)))
continue
.[instance.name] = instance
@@ -539,7 +539,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else
return TOPIC_NOACTION
if(((!(setting_species.spawn_flags & SPECIES_CAN_JOIN)) || (!is_alien_whitelisted(preference_mob(),setting_species))) && !check_rights(R_ADMIN|R_EVENT, 0) && !(setting_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE))
if(((!(setting_species.spawn_flags & SPECIES_CAN_JOIN)) || (!is_alien_whitelisted(user.client,setting_species))) && !check_rights(R_ADMIN|R_EVENT, 0) && !(setting_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE))
return TOPIC_NOACTION
var/prev_species = pref.species
@@ -1215,7 +1215,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(!(current_species.spawn_flags & SPECIES_CAN_JOIN))
restricted = 2
else if(!is_alien_whitelisted(preference_mob(),current_species))
else if(!is_alien_whitelisted(user.client,current_species))
restricted = 1
if(restricted)
@@ -83,7 +83,7 @@ var/list/gear_datums = list()
if(G.whitelisted && CONFIG_GET(flag/loadout_whitelist) != LOADOUT_WHITELIST_OFF && pref.client) //VOREStation Edit.
if(CONFIG_GET(flag/loadout_whitelist) == LOADOUT_WHITELIST_STRICT && G.whitelisted != pref.species)
continue
if(CONFIG_GET(flag/loadout_whitelist) == LOADOUT_WHITELIST_LAX && !is_alien_whitelisted(preference_mob(), GLOB.all_species[G.whitelisted]))
if(CONFIG_GET(flag/loadout_whitelist) == LOADOUT_WHITELIST_LAX && !is_alien_whitelisted(preference_mob.client, GLOB.all_species[G.whitelisted]))
continue
if(max_cost && G.cost > max_cost)
continue
@@ -9,7 +9,7 @@
if(!.)
return
return check_rights(R_MOD|R_ADMIN, FALSE, preferences.client)
return check_rights_for(preferences.client, R_MOD|R_ADMIN)
/datum/preference/toggle/show_debug_logs
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
@@ -22,7 +22,7 @@
if(!.)
return
return check_rights(R_DEBUG|R_ADMIN, FALSE, preferences.client)
return check_rights_for(preferences.client, R_DEBUG|R_ADMIN)
/datum/preference/toggle/show_chat_prayers
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
@@ -35,7 +35,7 @@
if(!.)
return
return check_rights(R_EVENT|R_ADMIN, FALSE, preferences.client)
return check_rights_for(preferences.client, R_EVENT|R_ADMIN)
// General holder prefs
/datum/preference/toggle/holder
@@ -85,4 +85,4 @@
if(!..(preferences))
return FALSE
return CONFIG_GET(flag/allow_admin_ooccolor) && check_rights(R_ADMIN|R_EVENT|R_FUN, 0, preferences.client)
return CONFIG_GET(flag/allow_admin_ooccolor) && check_rights_for(preferences.client, R_ADMIN|R_EVENT|R_FUN)
+1 -1
View File
@@ -7,7 +7,7 @@
var/list/Lines = list()
if(check_rights(R_ADMIN|R_SERVER|R_MOD,FALSE,src))
if(check_rights_for(src, R_ADMIN|R_SERVER|R_MOD))
for(var/client/C in GLOB.clients)
var/entry = "<tr><td>[C.key]"
if(C.holder && C.holder.fakekey)
+6 -6
View File
@@ -51,13 +51,13 @@
if(holder && !holder.fakekey)
ooc_style = "elevated"
if(holder.rights & R_EVENT) //Retired Admins
if(check_rights(R_EVENT)) //Retired Admins
ooc_style = "event_manager"
if(holder.rights & R_ADMIN && !(holder.rights & R_BAN)) //Game Masters
if(check_rights(R_ADMIN) && !(check_rights(R_BAN))) //Game Masters
ooc_style = "moderator"
if(holder.rights & R_SERVER && !(holder.rights & R_BAN)) //Developers
if(check_rights(R_SERVER) && !(check_rights(R_BAN))) //Developers
ooc_style = "developer"
if(holder.rights & R_ADMIN && holder.rights & R_BAN) //Admins
if(check_rights(R_ADMIN) && check_rights(R_BAN)) //Admins
ooc_style = "admin"
msg = GLOB.is_valid_url.Replace(msg,span_linkify("$1"))
@@ -74,7 +74,7 @@
else
display_name = holder.fakekey
var/pref_color = prefs.read_preference(/datum/preference/color/ooc_color)
if(holder && !holder.fakekey && (holder.rights & R_ADMIN|R_FUN|R_EVENT) && CONFIG_GET(flag/allow_admin_ooccolor) && pref_color != "#010000") // keeping this for the badmins
if(holder && !holder.fakekey && (check_rights(R_ADMIN|R_FUN|R_EVENT)) && CONFIG_GET(flag/allow_admin_ooccolor) && pref_color != "#010000") // keeping this for the badmins
to_chat(target, span_ooc("<font color='[pref_color]'>" + create_text_tag("ooc", "OOC:", target) + " <EM>[display_name]:</EM> [span_message(msg)]</font>"))
else
to_chat(target, span_ooc("<span class='[ooc_style]'>" + create_text_tag("ooc", "OOC:", target) + " <EM>[display_name]:</EM> " + span_message(msg)) + "</span>")
@@ -163,7 +163,7 @@
// Admins with RLOOC displayed who weren't already in
for(var/client/admin in GLOB.admins)
if(!(admin in receivers) && admin.prefs?.read_preference(/datum/preference/toggle/holder/show_rlooc))
if(check_rights(R_SERVER, FALSE, admin)) //Stop rLOOC showing for retired staff
if(check_rights_for(admin, R_SERVER)) //Stop rLOOC showing for retired staff
r_receivers |= admin
msg = GLOB.is_valid_url.Replace(msg,span_linkify("$1"))
+5 -5
View File
@@ -73,19 +73,19 @@
if(C.holder.fakekey && !check_rights_for(src, R_ADMIN|R_MOD)) // Only admins and mods can see stealthmins
continue
// VOREStation Edit End
if(check_rights(R_BAN, FALSE, C)) // admins //VOREStation Edit
if(check_rights_for(C, R_BAN)) // admins //VOREStation Edit
num_admins_online++
else if(check_rights(R_ADMIN, FALSE, C) && !check_rights(R_SERVER, FALSE, C)) // mods //VOREStation Edit: Game masters
else if(check_rights_for(C, R_ADMIN) && !check_rights_for(C, R_SERVER)) // mods //VOREStation Edit: Game masters
category = R_MOD
num_mods_online++
else if(check_rights(R_SERVER, FALSE, C)) // developers
else if(check_rights_for(C, R_SERVER)) // developers
category = R_SERVER
num_devs_online++
else if(check_rights(R_STEALTH, FALSE, C)) // event managers //VOREStation Edit: Retired Staff
else if(check_rights_for(C, R_STEALTH)) // event managers //VOREStation Edit: Retired Staff
category = R_EVENT
num_event_managers_online++
temp += "\t[C] is a [C.holder.rank]"
temp += "\t[C] is a [C.holder.rank_names()]"
if(holder)
if(C.holder.fakekey)
temp += " " + span_italics("(as [C.holder.fakekey])")