<%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; bool ur_editrecs = 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); if (ur_editrecs) editUser->SetRight(UR_EDITRECS); 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); ur_editrecs = User->HasRightTo(UR_EDITRECS); 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; ur_editrecs = 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> <input type="checkbox" name="ur_editrecs" value="1" <{ CHECKIF(ur_editrecs) }> /> <label for="ur_editrecs"><$ tr("Edit recordings") $></label><br> </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>