Merge pull request #10868 from AffectedArc07/ckey-id-lookup

Adds an admin panel to force unlink discord accounts
This commit is contained in:
variableundefined
2019-02-11 21:20:39 +08:00
committed by GitHub
3 changed files with 49 additions and 0 deletions
+25
View File
@@ -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")
+10
View File
@@ -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()
+14
View File
@@ -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