diff options
Diffstat (limited to 'pages/edit_user.ecpp')
-rw-r--r-- | pages/edit_user.ecpp | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/pages/edit_user.ecpp b/pages/edit_user.ecpp new file mode 100644 index 0000000..2ae510a --- /dev/null +++ b/pages/edit_user.ecpp @@ -0,0 +1,176 @@ +<%pre> +#include "exception.h" +#include "tools.h" +#include "users.h" +#include "livefeatures.h" +#include "setup.h" + +using namespace std; +using namespace vdrlive; + +</%pre> +<%args> + // input parameters + string userid; + // form parameters + string username; + string password; + bool ur_editsetup = false; + bool ur_addtimers = false; + bool ur_deltimers = false; + bool ur_delrecs = false; + bool ur_useremote = false; + bool ur_startreplay = false; + bool ur_switchchnl = false; + bool ur_addstimers = false; + bool ur_delstimers = false; +</%args> +<%session scope="global"> +bool logged_in(false); +</%session> +<%request scope="page"> +cUser* editUser; +</%request> +<%include>page_init.eh</%include> +<%cpp> + if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html"); + +#define CHECKIF(x) reply.out() << ( (x) ? "checked=\"checked\"" : "" ); + + editUser = NULL; + + if (request.getMethod() == "POST") { + if (!userid.empty()) { + editUser = Users.GetByUserId( userid ); + if ( editUser == 0 ) + throw HtmlError( tr("Couldn't find user. Maybe you mistyped your request?") ); + editUser->SetName(username); + if (password != std::string(editUser->GetPasswordLength(), '*')) + editUser->SetPassword(password); + } + else + { + if (Users.GetByUserName( username )) + throw HtmlError( tr("This user name is already in use!") ); + editUser = new cUser(Users.GetNewId(), username, password); + Users.Add(editUser); + } + editUser->SetUserrights(0); + if (ur_editsetup) editUser->SetRight(UR_EDITSETUP); + if (ur_addtimers) editUser->SetRight(UR_EDITTIMERS); + if (ur_deltimers) editUser->SetRight(UR_DELTIMERS); + if (ur_delrecs) editUser->SetRight(UR_DELRECS); + if (ur_useremote) editUser->SetRight(UR_USEREMOTE); + if (ur_startreplay) editUser->SetRight(UR_STARTREPLAY); + if (ur_switchchnl) editUser->SetRight(UR_SWITCHCHNL); + if (ur_addstimers) editUser->SetRight(UR_EDITSTIMERS); + if (ur_delstimers) editUser->SetRight(UR_DELSTIMERS); + + Users.Save(); + + return reply.redirect("users.html"); + } + + pageTitle = !userid.empty() ? tr("Edit user") : tr("New user"); + + if ( !userid.empty() ) { + cUser* User = Users.GetByUserId( userid ); + if ( User == 0 ) + throw HtmlError( tr("Couldn't find user. Maybe you mistyped your request?") ); + + username = User->Name(); + password = std::string(User->GetPasswordLength(), '*'); + ur_editsetup = User->HasRightTo(UR_EDITSETUP); + ur_addtimers = User->HasRightTo(UR_EDITTIMERS); + ur_deltimers = User->HasRightTo(UR_DELTIMERS); + ur_delrecs = User->HasRightTo(UR_DELRECS); + ur_useremote = User->HasRightTo(UR_USEREMOTE); + ur_startreplay = User->HasRightTo(UR_STARTREPLAY); + ur_switchchnl = User->HasRightTo(UR_SWITCHCHNL); + ur_addstimers = User->HasRightTo(UR_EDITSTIMERS); + ur_delstimers = User->HasRightTo(UR_DELSTIMERS); + editUser = User; + } + else + { + ur_editsetup = true; + ur_addtimers = true; + ur_deltimers = true; + ur_delrecs = true; + ur_useremote = true; + ur_startreplay = true; + ur_switchchnl = true; + ur_addstimers = true; + ur_delstimers = true; + } +</%cpp> +<& pageelems.doc_type &> +<html> + <head> + <title>VDR Live - <$ pageTitle $></title> + <& pageelems.stylesheets &> + <& pageelems.ajax_js &> + </head> + <body> + <& pageelems.logo &> + <& menu active=("users") &> + <div class="inhalt"> + <form method="post" name="edit_user" action="edit_user.ecpp"> + <input type="hidden" name="userid" value="<$ userid $>"/> + <table class="formular" cellpadding="0" cellspacing="0"> + <tr class="head"> + <td class="toprow leftcol rightcol" colspan="2"><div class="boxheader"><div><div class="caption"><$ pageTitle $></div></div></div></td> + </tr> + + <tr> + <td class="label leftcol"><div class="withmargin"><$ tr("Name" ) $>:</div></td> + <td class="rightcol"><input type="text" name="username" value="<$ username $>" size="80" /></td> + </tr> + <tr> + <td class="label leftcol"><div class="withmargin"><$ tr("Password" ) $>:</div></td> + <td class="rightcol"><input type="password" name="password" value="<$ password $>" size="80" /></td> + </tr> + <!-- user rights --> + <tr> + <td class="label leftcol"><div class="withmargin"><$ tr("User rights") $>:</div></td> + <td class="rightcol"> + <input type="checkbox" name="ur_editsetup" value="1" <{ CHECKIF(ur_editsetup) }> /> + <label for="ur_editsetup"><$ tr("Edit setup") $></label><br> + <input type="checkbox" name="ur_addtimers" value="1" <{ CHECKIF(ur_addtimers) }> /> + <label for="ur_addtimers"><$ tr("Add or edit timers") $></label><br> + <input type="checkbox" name="ur_deltimers" value="1" <{ CHECKIF(ur_deltimers) }> /> + <label for="ur_deltimers"><$ tr("Delete timers") $></label><br> + <input type="checkbox" name="ur_delrecs" value="1" <{ CHECKIF(ur_delrecs) }> /> + <label for="ur_delrecs"><$ tr("Delete recordings") $></label><br> + <input type="checkbox" name="ur_useremote" value="1" <{ CHECKIF(ur_useremote) }> /> + <label for="ur_useremote"><$ tr("Use remote menu") $></label><br> + <input type="checkbox" name="ur_startreplay" value="1" <{ CHECKIF(ur_startreplay) }> /> + <label for="ur_startreplay"><$ tr("Start replay") $></label><br> + <input type="checkbox" name="ur_switchchnl" value="1" <{ CHECKIF(ur_switchchnl) }> /> + <label for="ur_switchchnl"><$ tr("Switch channel") $></label><br> +<%cpp> + if (LiveFeatures< features::epgsearch >().Recent()) { +</%cpp> + <input type="checkbox" name="ur_addstimers" value="1" <{ CHECKIF(ur_addstimers) }> /> + <label for="ur_addstimers"><$ tr("Add or edit search timers") $></label><br> + <input type="checkbox" name="ur_delstimers" value="1" <{ CHECKIF(ur_delstimers) }> /> + <label for="ur_delstimers"><$ tr("Delete search timers") $></label><br> +<%cpp> + } +</%cpp> + </td> + </tr> + <tr> + <td class="buttonpanel leftcol rightcol bottomrow" colspan="2"> + <div class="withmargin"> + <button class="green" type="submit" name="save"><$ tr("Save") $></button> + <button type="button" class="red" onclick="history.back()"><$ tr("Cancel") $></button> + </div> + </td> + </tr> + </table> + </form> + </div> + </body> +</html> +<%include>page_exit.eh</%include> |