mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 00:23:29 +01:00
Merge pull request #10868 from AffectedArc07/ckey-id-lookup
Adds an admin panel to force unlink discord accounts
This commit is contained in:
@@ -1067,3 +1067,28 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space
|
||||
continue
|
||||
result[1]++
|
||||
return result
|
||||
|
||||
//Discord duplications
|
||||
/datum/admins/proc/discord_duplicates()
|
||||
if(!usr.client.holder)
|
||||
return
|
||||
var/dat = "<html><head><title>Discord Duplicates</title></head>"
|
||||
dat += "<body><p><i>Discord IDs with more than one ckey linked are shown below</i></i><table border=1 cellspacing=5><B><tr><th>Discord ID</th><th>CKEYs</th><th>Unlink</th></B>"
|
||||
// If anyone reads this, I spent a whole 30 minutes writing just this fucking query. It is the messiest SQL statement I have ever written
|
||||
// If anyone even thinks about touching this I will impale you on a railroad spike
|
||||
// It hurts to wake up in the morning, -aa07
|
||||
var/DBQuery/discord_ids = dbcon.NewQuery("SELECT a.* FROM [format_table_name("discord")] a JOIN (SELECT discord_id, ckey, COUNT(*) FROM [format_table_name("discord")] GROUP BY discord_id HAVING count(*) > 1 ) b ON a.discord_id = b.discord_id ORDER BY a.discord_id")
|
||||
if(!discord_ids.Execute())
|
||||
var/err = discord_ids.ErrorMsg()
|
||||
log_game("SQL ERROR while selecting discord accounts. Error : \[[err]\]\n")
|
||||
return
|
||||
while(discord_ids.NextRow())
|
||||
var/ckey = discord_ids.item[1]
|
||||
var/id = discord_ids.item[2]
|
||||
dat += "<tr><td><b>" + id + "</b></td>"
|
||||
dat += "<td>" + ckey + "</td>"
|
||||
dat += "<td><a href='?src=[UID()];force_discord_unlink=[ckey]'>Unlink</td></tr>"
|
||||
|
||||
dat += "</table></body></html>"
|
||||
|
||||
usr << browse(dat, "window=duplicates;size=500x480")
|
||||
@@ -79,6 +79,7 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/list_ssds,
|
||||
/client/proc/cmd_admin_headset_message,
|
||||
/client/proc/spawn_floor_cluwne,
|
||||
/client/proc/show_discord_duplicates,
|
||||
)
|
||||
var/list/admin_verbs_ban = list(
|
||||
/client/proc/unban_panel,
|
||||
@@ -1045,3 +1046,12 @@ var/list/admin_verbs_ticket = list(
|
||||
|
||||
log_admin("[key_name(usr)] has [advanced_admin_interaction ? "activated" : "deactivated"] their advanced admin interaction.")
|
||||
message_admins("[key_name_admin(usr)] has [advanced_admin_interaction ? "activated" : "deactivated"] their advanced admin interaction.")
|
||||
|
||||
/client/proc/show_discord_duplicates()
|
||||
set name = "Show Duplicate Discord Links"
|
||||
set category = "Admin"
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
holder.discord_duplicates()
|
||||
@@ -3349,6 +3349,20 @@
|
||||
// Refresh the page
|
||||
src.view_flagged_books()
|
||||
|
||||
// Force unlink a discord key
|
||||
else if(href_list["force_discord_unlink"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target_ckey = href_list["force_discord_unlink"]
|
||||
var/DBQuery/admin_unlink_discord_id = dbcon.NewQuery("DELETE FROM [format_table_name("discord")] WHERE ckey = '[target_ckey]'")
|
||||
if(!admin_unlink_discord_id.Execute())
|
||||
var/err = admin_unlink_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while admin-unlinking discord account. Error : \[[err]\]\n")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>Successfully forcefully unlinked discord account from [target_ckey]</span>")
|
||||
message_admins("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
|
||||
log_admin("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
|
||||
|
||||
/client/proc/create_eventmob_for(var/mob/living/carbon/human/H, var/killthem = 0)
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user