diff --git a/judge_expertise.php b/judge_expertise.php
index e7e56163..2e228fd1 100644
--- a/judge_expertise.php
+++ b/judge_expertise.php
@@ -26,15 +26,24 @@
require_once('user.inc.php');
require_once('judge.inc.php');
- if($_SESSION['embed'] == true) {
- $u = user_load($_SESSION['embed_edit_id']);
- } else {
- $u = user_load($_SESSION['users_id']);
- }
+/* Sort out who we're editting */
+if($_POST['users_id'])
+ $eid = intval($_POST['users_id']); /* From a save form */
+else if(array_key_exists('embed_edit_id', $_SESSION))
+ $eid = $_SESSION['embed_edit_id']; /* From the embedded editor */
+else
+ $eid = $_SESSION['users_id']; /* Regular entry */
+if($eid != $_SESSION['users_id']) {
+ /* Not editing ourself, we had better be
+ * a committee member */
+ user_auth_required('committee','admin');
+}
+
+$u = user_load($eid);
- if($_POST['action']=="save")
- {
+switch($_GET['action']) {
+case 'save':
if(!is_array($_POST['division']))
$_POST['division']=array();
if(!is_array($_POST['subdivision']))
@@ -62,15 +71,13 @@
}
}
user_save($u);
- message_push(notice(i18n("Preferences successfully saved")));
- $u = user_load($u['id']);
- }
+ happy_("Preferences successfully saved");
+ exit;
+}
+
if($_SESSION['embed'] == true) {
- echo "
";
display_messages();
-// echo "