diff options
author | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2009-09-07 19:13:48 +0200 |
---|---|---|
committer | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2009-09-07 19:13:48 +0200 |
commit | 4cf240cb6faa33f1e51d1040ee6162f245525f8f (patch) | |
tree | 477ccddccc832dff245fc1590d7a52fbd59f59b5 /pages | |
parent | ac835e1d5366908e0c3a706ed3c9298041c4bad9 (diff) | |
download | vdr-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/Makefile | 2 | ||||
-rw-r--r-- | pages/edit_searchtimer.ecpp | 4 | ||||
-rw-r--r-- | pages/edit_timer.ecpp | 4 | ||||
-rw-r--r-- | pages/login.ecpp | 5 | ||||
-rw-r--r-- | pages/menu.ecpp | 1 | ||||
-rw-r--r-- | pages/play_recording.ecpp | 3 | ||||
-rw-r--r-- | pages/remote.ecpp | 4 | ||||
-rw-r--r-- | pages/searchtimers.ecpp | 6 | ||||
-rw-r--r-- | pages/setup.ecpp | 10 | ||||
-rw-r--r-- | pages/switch_channel.ecpp | 4 | ||||
-rw-r--r-- | pages/timers.ecpp | 3 | ||||
-rw-r--r-- | pages/vlc.ecpp | 3 |
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); |