<%pre> #include "exception.h" #include "tools.h" #include "users.h" #include "livefeatures.h" #include "setup.h" using namespace std; using namespace vdrlive; <%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; <%session scope="global"> bool logged_in(false); <%request scope="page"> cUser* editUser; <%include>page_init.eh <%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; } <& pageelems.doc_type &> VDR Live - <$ pageTitle $> <& pageelems.stylesheets &> <& pageelems.ajax_js &> <& pageelems.logo &> <& menu active=("users") &>
<$ pageTitle $>
<$ tr("Name" ) $>:
<$ tr("Password" ) $>:
<$ tr("User rights") $>:
/>
/>
/>
/>
/>
/>
/>
<%cpp> if (LiveFeatures< features::epgsearch >().Recent()) { />
/>
<%cpp> } />
<%include>page_exit.eh