/client/proc/edit_admin_permissions() set category = "Admin" set name = "Permissions Panel" set desc = "Edit admin permissions" if(!check_rights(R_PERMISSIONS)) return usr.client.holder.edit_admin_permissions() /datum/admins/proc/edit_admin_permissions() if(!check_rights(R_PERMISSIONS)) return var/output = {" Permissions Panel
"} for(var/adm_ckey in admin_datums) var/datum/admins/D = admin_datums[adm_ckey] if(!D) continue var/rank = D.rank ? D.rank : "*none*" var/rights = rights2text(D.rights," ") if(!rights) rights = "*none*" output += "" output += "" output += "" output += "" output += "" output += {"
CKEY \[+\] RANKPERMISSIONS
[adm_ckey] \[-\][rank][rights]
Search:
"} usr << browse(output,"window=editrights;size=600x500") /datum/admins/proc/log_admin_rank_modification(var/adm_ckey, var/new_rank) if(config.admin_legacy_system) return if(!usr.client) return if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS)) to_chat(usr, "You do not have permission to do this!") return establish_db_connection() if(!SSdbcore.IsConnected()) //CHOMPEdit TGSQL to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_rank) return adm_ckey = ckey(adm_ckey) if(!adm_ckey) return if(!istext(adm_ckey) || !istext(new_rank)) return var/DBQuery/select_query = SSdbcore.NewQuery("SELECT id FROM erro_admin WHERE ckey = '[adm_ckey]'") //CHOMPEdit TGSQL select_query.Execute() var/new_admin = 1 var/admin_id while(select_query.NextRow()) new_admin = 0 admin_id = text2num(select_query.item[1]) qdel(select_query) //CHOMPEdit TGSQL if(new_admin) var/DBQuery/insert_query = SSdbcore.NewQuery("INSERT INTO `erro_admin` (`id`, `ckey`, `rank`, `level`, `flags`) VALUES (null, '[adm_ckey]', '[new_rank]', -1, 0)") //CHOMPEdit TGSQL insert_query.Execute() qdel(insert_query) //CHOMPEdit TGSQL var/DBQuery/log_query = SSdbcore.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');") //CHOMPEdit TGSQL log_query.Execute() qdel(log_query) //CHOMPEdit TGSQL to_chat(usr, "New admin added.") else if(!isnull(admin_id) && isnum(admin_id)) var/DBQuery/insert_query = SSdbcore.NewQuery("UPDATE `erro_admin` SET rank = '[new_rank]' WHERE id = [admin_id]") //CHOMPEdit TGSQL insert_query.Execute() qdel(insert_query) //CHOMPEdit TGSQL var/DBQuery/log_query = SSdbcore.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');") //CHOMPEdit TGSQL log_query.Execute() qdel(log_query) //CHOMPEdit TGSQL to_chat(usr, "Admin rank changed.") /datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) if(config.admin_legacy_system) return if(!usr.client) return if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS)) to_chat(usr, "You do not have permission to do this!") return establish_db_connection() if(!SSdbcore.IsConnected()) //CHOMPEdit TGSQL to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_permission) return adm_ckey = ckey(adm_ckey) if(!adm_ckey) return if(istext(new_permission)) new_permission = text2num(new_permission) if(!istext(adm_ckey) || !isnum(new_permission)) return var/DBQuery/select_query = SSdbcore.NewQuery("SELECT id, flags FROM erro_admin WHERE ckey = '[adm_ckey]'") //CHOMPEdit TGSQL select_query.Execute() var/admin_id var/admin_rights while(select_query.NextRow()) admin_id = text2num(select_query.item[1]) admin_rights = text2num(select_query.item[2]) qdel(select_query) //CHOMPEdit TGSQL if(!admin_id) return if(admin_rights & new_permission) //This admin already has this permission, so we are removing it. var/DBQuery/insert_query = SSdbcore.NewQuery("UPDATE `erro_admin` SET flags = [admin_rights & ~new_permission] WHERE id = [admin_id]") //CHOMPEdit TGSQL insert_query.Execute() qdel(insert_query) //CHOMPEdit TGSQL var/DBQuery/log_query = SSdbcore.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');") //CHOMPEdit TGSQL log_query.Execute() qdel(log_query) //CHOMPEdit TGSQL to_chat(usr, "Permission removed.") else //This admin doesn't have this permission, so we are adding it. var/DBQuery/insert_query = SSdbcore.NewQuery("UPDATE `erro_admin` SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]") //CHOMPEdit TGSQL insert_query.Execute() qdel(insert_query) //CHOMPEdit TGSQL var/DBQuery/log_query = SSdbcore.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')") //CHOMPEdit TGSQL log_query.Execute() qdel(log_query) //CHOMPEdit TGSQL to_chat(usr, "Permission added.")