summaryrefslogtreecommitdiff
path: root/pages
diff options
context:
space:
mode:
authorChristian Wieninger <cwieninger (at) gmx (dot) de>2009-09-07 19:13:48 +0200
committerChristian Wieninger <cwieninger (at) gmx (dot) de>2009-09-07 19:13:48 +0200
commit4cf240cb6faa33f1e51d1040ee6162f245525f8f (patch)
tree477ccddccc832dff245fc1590d7a52fbd59f59b5 /pages
parentac835e1d5366908e0c3a706ed3c9298041c4bad9 (diff)
downloadvdr-plugin-live-4cf240cb6faa33f1e51d1040ee6162f245525f8f.tar.gz
vdr-plugin-live-4cf240cb6faa33f1e51d1040ee6162f245525f8f.tar.bz2
new user management within setup that also handles different user rights
Diffstat (limited to 'pages')
-rw-r--r--pages/Makefile2
-rw-r--r--pages/edit_searchtimer.ecpp4
-rw-r--r--pages/edit_timer.ecpp4
-rw-r--r--pages/login.ecpp5
-rw-r--r--pages/menu.ecpp1
-rw-r--r--pages/play_recording.ecpp3
-rw-r--r--pages/remote.ecpp4
-rw-r--r--pages/searchtimers.ecpp6
-rw-r--r--pages/setup.ecpp10
-rw-r--r--pages/switch_channel.ecpp4
-rw-r--r--pages/timers.ecpp3
-rw-r--r--pages/vlc.ecpp3
12 files changed, 44 insertions, 5 deletions
diff --git a/pages/Makefile b/pages/Makefile
index f7512f5..c49c673 100644
--- a/pages/Makefile
+++ b/pages/Makefile
@@ -17,7 +17,7 @@ OBJS = menu.o recordings.o schedule.o screenshot.o timers.o \
searchepg.o login.o ibox.o xmlresponse.o play_recording.o \
pause_recording.o stop_recording.o ffw_recording.o \
rwd_recording.o setup.o content.o epginfo.o timerconflicts.o \
- recstream.o
+ recstream.o users.o edit_user.o
### Default rules:
diff --git a/pages/edit_searchtimer.ecpp b/pages/edit_searchtimer.ecpp
index fbd2cce..69103a1 100644
--- a/pages/edit_searchtimer.ecpp
+++ b/pages/edit_searchtimer.ecpp
@@ -10,6 +10,7 @@
#include "epgsearch.h"
#include "setup.h"
#include "i18n.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -99,6 +100,9 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
}>
<%cpp>
+ if (!cUser::CurrentUserHasRightTo(UR_EDITSTIMERS))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
+
#define SELECTIF(x) reply.out() << ( (x) ? "selected=\"selected\"" : "" );
#define CHECKIF(x) reply.out() << ( (x) ? "checked=\"checked\"" : "" );
diff --git a/pages/edit_timer.ecpp b/pages/edit_timer.ecpp
index 47a6766..299f35a 100644
--- a/pages/edit_timer.ecpp
+++ b/pages/edit_timer.ecpp
@@ -13,6 +13,7 @@
#include "i18n.h"
#include "livefeatures.h"
#include "epgsearch.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -57,6 +58,9 @@ cTimer* timer;
<%cpp>
if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
+ if (!cUser::CurrentUserHasRightTo(UR_EDITTIMERS))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
+
bool ajaxReq = !async.empty() && (lexical_cast<int>(async) != 0);
tChannelID channelid = tChannelID();
diff --git a/pages/login.ecpp b/pages/login.ecpp
index 754ec82..a49f1fa 100644
--- a/pages/login.ecpp
+++ b/pages/login.ecpp
@@ -1,6 +1,7 @@
<%pre>
#include "tools.h"
#include "setup.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -19,13 +20,15 @@ bool logged_in(false);
std::string message;
if (action == "login") {
- if ((login == LiveSetup().GetAdminLogin()) && (MD5Hash(password) == LiveSetup().GetMD5HashAdminPassword())) {
+ if (Users.ValidLogin(login, password)) {
logged_in = true;
+ cUsers::logged_in_user = login;
} else {
message = tr("Wrong username or password");
}
} else if (action == "logout") {
logged_in = false;
+ cUsers::logged_in_user = "";
}
LiveSetup().CheckLocalNet(request.getPeerIp());
diff --git a/pages/menu.ecpp b/pages/menu.ecpp
index a998169..1159014 100644
--- a/pages/menu.ecpp
+++ b/pages/menu.ecpp
@@ -96,6 +96,7 @@ if (!component.empty()) {
</%cpp>
<& menu.component current=("recordings") &>
<& menu.component current=("remote") &>
+ <& menu.component current=("users") &>
</div>
</div>
</div>
diff --git a/pages/play_recording.ecpp b/pages/play_recording.ecpp
index 5a26b41..1f018de 100644
--- a/pages/play_recording.ecpp
+++ b/pages/play_recording.ecpp
@@ -5,6 +5,7 @@
#include "setup.h"
#include "tasks.h"
#include "tools.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -18,6 +19,8 @@ using namespace vdrlive;
</%session>
<%cpp>
if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
+ if (!cUser::CurrentUserHasRightTo(UR_STARTREPLAY))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
reply.setContentType( "application/xml" );
PlayRecordingTask task( param );
diff --git a/pages/remote.ecpp b/pages/remote.ecpp
index dd45cd0..dc0bf13 100644
--- a/pages/remote.ecpp
+++ b/pages/remote.ecpp
@@ -6,6 +6,7 @@
#include "grab.h"
#include "setup.h"
#include "tools.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -25,6 +26,9 @@ bool logged_in(false);
if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
}>
<%cpp>
+ if (!cUser::CurrentUserHasRightTo(UR_USEREMOTE))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
+
pageTitle = tr("Remote Control");
ReadLock channelsLock( Channels );
diff --git a/pages/searchtimers.ecpp b/pages/searchtimers.ecpp
index fc2eaf8..dc8bc53 100644
--- a/pages/searchtimers.ecpp
+++ b/pages/searchtimers.ecpp
@@ -4,6 +4,7 @@
#include "epgsearch.h"
#include "tools.h"
#include "setup.h"
+#include "users.h"
using namespace vdrlive;
using namespace std;
@@ -27,8 +28,11 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
if ( !searchtimerid.empty() ) {
if (action == "toggle")
timers.ToggleActive(searchtimerid);
- if (action == "delete")
+ if (action == "delete") {
+ if (!cUser::CurrentUserHasRightTo(UR_DELSTIMERS))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
timers.Delete(searchtimerid);
+ }
}
if (action == "update")
timers.TriggerUpdate();
diff --git a/pages/setup.ecpp b/pages/setup.ecpp
index cc1db8c..845e4b7 100644
--- a/pages/setup.ecpp
+++ b/pages/setup.ecpp
@@ -3,6 +3,7 @@
#include <vdr/tools.h>
#include "setup.h"
#include "tools.h"
+#include "users.h"
#include "i18n.h"
using namespace vdrlive;
@@ -33,7 +34,9 @@ using namespace std;
</%session>
<%include>page_init.eh</%include>
<%cpp>
-if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
+if (!logged_in && LiveSetup().UseAuth() ) return reply.redirect("login.html");
+if (!cUser::CurrentUserHasRightTo(UR_EDITSETUP))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
#define SELECTIF(x) reply.out() << ( (x) ? "selected=\"selected\"" : "" );
#define CHECKIF(x) reply.out() << ( (x) ? "checked=\"checked\"" : "" );
@@ -152,6 +155,10 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
<td><input type="password" name="pass" value="<$ pass $>" id="pass" onchange="setauthchanged(this)" /></td>
</tr>
<tr>
+ <td class="label"><div class="withmargin"><a href="users.html"><$ tr("User management") $></a></div></td>
+ <td/>
+ </tr>
+ <tr>
<td class="label"><div class="withmargin"><$ tr("Local net (no login required)") $>:</div></td>
<td><input type="text" name="localnetmask" value="<$ localnetmask $>" id="localnetmask" /></td>
</tr>
@@ -282,4 +289,3 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
<%include>page_exit.eh</%include>
-
diff --git a/pages/switch_channel.ecpp b/pages/switch_channel.ecpp
index 9b8b48b..2cffefc 100644
--- a/pages/switch_channel.ecpp
+++ b/pages/switch_channel.ecpp
@@ -3,6 +3,7 @@
#include "exception.h"
#include "tasks.h"
#include "tools.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -16,6 +17,9 @@ using namespace vdrlive;
bool ajaxReq = !async.empty() && (lexical_cast<int>(async) != 0);
string referrer;
+ if (!cUser::CurrentUserHasRightTo(UR_SWITCHCHNL))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
+
if (ajaxReq) {
reply.setContentType( "application/xml" );
}
diff --git a/pages/timers.ecpp b/pages/timers.ecpp
index 93d2e91..2a9ee4c 100644
--- a/pages/timers.ecpp
+++ b/pages/timers.ecpp
@@ -8,6 +8,7 @@
#include "epg_events.h"
#include "timerconflict.h"
#include "livefeatures.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -44,6 +45,8 @@ static const size_t maximumDescriptionLength = 300;
if ( timer == 0 )
throw HtmlError( tr("Couldn't find timer. Maybe you mistyped your request?") );
if (action == "delete") {
+ if (!cUser::CurrentUserHasRightTo(UR_DELTIMERS))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
LiveTimerManager().DelTimer(timer);
timerNotifier.SetTimerModification();
}
diff --git a/pages/vlc.ecpp b/pages/vlc.ecpp
index 445cc94..065969c 100644
--- a/pages/vlc.ecpp
+++ b/pages/vlc.ecpp
@@ -4,6 +4,7 @@
#include <vdr/keys.h>
#include "setup.h"
#include "tools.h"
+#include "users.h"
using namespace std;
using namespace vdrlive;
@@ -23,6 +24,8 @@ using namespace vdrlive;
<%include>page_init.eh</%include>
<%cpp>
if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
+ if (!cUser::CurrentUserHasRightTo(UR_STARTREPLAY))
+ throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
bool asyncReq = !async.empty() && (lexical_cast<int>(async) != 0);