From 8c04d06d994709061ca0f02b9cbc5bab20380f88 Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Mon, 17 Apr 2017 18:09:39 +0200
Subject: [PATCH] Tried wiki api-auth with AuthRemoteUser.

Does not work.

ref #107
---
 templates/protocol-show.html |  4 +++-
 wiki.py                      | 12 +++++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/templates/protocol-show.html b/templates/protocol-show.html
index 5f49b79..5d5a284 100644
--- a/templates/protocol-show.html
+++ b/templates/protocol-show.html
@@ -21,8 +21,10 @@
                 {% if protocol.source is not none %}
                     <a class="btn btn-primary" href="{{url_for("get_protocol_source", protocol_id=protocol.id)}}">Quelltext</a>
                 {% endif %} 
-                {% if not protocol.public %}
+                {% if not protocol.public or has_admin_right %}
                     <a class="btn {% if protocol.is_done() %}btn-success{% else %}btn-default{% endif %}" href="{{url_for("update_protocol", protocol_id=protocol.id)}}">Editieren</a>
+                {% endif %}
+                {% if not protocol.public %}
                     {% if config.ETHERPAD_ACTIVE %}
                     <a class="btn btn-primary" href="{{url_for("etherpush_protocol", protocol_id=protocol.id)}}"{% if large_time_diff %} onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst in {{time_diff.days}} Tagen.');"{% endif %}>Etherpad</a>
                     {% endif %}
diff --git a/wiki.py b/wiki.py
index 414892f..4ae8040 100644
--- a/wiki.py
+++ b/wiki.py
@@ -4,6 +4,7 @@ import json
 import config
 
 HTTP_STATUS_OK = 200
+HTTP_STATUS_AUTHENTICATE = 401
 
 class WikiException(Exception):
     pass
@@ -88,11 +89,12 @@ class WikiClient:
         kwargs["action"] = action
         kwargs["format"] = "json"
         params = _filter_params(kwargs)
-        req = None
-        if method == "get":
-            req = requests.get(self.endpoint, cookies=self.cookies, params=params)
-        elif method == "post":
-            req = requests.post(self.endpoint, cookies=self.cookies, data=data, params=params)
+        def _do_request():
+            if method == "get":
+                return requests.get(self.endpoint, cookies=self.cookies, params=params, auth=requests.auth.HTTPBasicAuth(self.user, self.password))
+            elif method == "post":
+                return requests.post(self.endpoint, cookies=self.cookies, data=data, params=params, auth=requests.auth.HTTPBasicAuth(self.user, self.password))
+        req = _do_request()
         if req.status_code != HTTP_STATUS_OK:
             raise WikiException("HTTP status code {} on action {}.".format(req.status_code, action))
         self.cookies.update(req.cookies)
-- 
GitLab