mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-14 00:26:02 +01:00
[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:
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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])")
|
||||
|
||||
Reference in New Issue
Block a user