2020-11-24 Fred Gleason <fredg@paravelsystems.com>

* Removed the 'USERS.ADMIN_USERS_PRIV' field from the database.
	* Added a 'USERS.ADMIN_RSS_PRIV' field to the database.
	* Incremented the database version to 346.
	* Added 'RDUser:adminRss()' and 'RDUser::setAdminRss()' methods.
	* Added an 'Administer RSS Feeds' checkbox to the 'Administrative
	Rights' section of the 'User' dialog in rdadmin(1).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2020-11-24 18:57:20 -05:00
parent 82a368fdca
commit 57f2917ceb
26 changed files with 388 additions and 184 deletions

View File

@ -20638,3 +20638,10 @@
2020-11-24 Fred Gleason <fredg@paravelsystems.com>
* Added 'E-Mail Address', 'Phone Number' and 'Local Auth' columns
to the 'Users' list in the 'Rivendell User List' dialog in rdadmin(1).
2020-11-24 Fred Gleason <fredg@paravelsystems.com>
* Removed the 'USERS.ADMIN_USERS_PRIV' field from the database.
* Added a 'USERS.ADMIN_RSS_PRIV' field to the database.
* Incremented the database version to 346.
* Added 'RDUser:adminRss()' and 'RDUser::setAdminRss()' methods.
* Added an 'Administer RSS Feeds' checkbox to the 'Administrative
Rights' section of the 'User' dialog in rdadmin(1).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -16,6 +16,7 @@ ENABLE_WEB enum('N','Y')
LOCAL_AUTH enum('N','Y')
PAM_SERVICE varchar(32)
ADMIN_CONFIG_PRIV enum('N','Y')
ADMIN_RSS_PRIV enum('N','Y')
CREATE_CARTS_PRIV enum('N','Y')
DELETE_CARTS_PRIV enum('N','Y')
MODIFY_CARTS_PRIV enum('N','Y')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 922 B

View File

@ -1,115 +1,178 @@
/* XPM */
const static char * rss_xpm[] = {
"32 32 80 1",
" c None",
". c #FEFEFF",
"+ c #F6F6FF",
"@ c #F7F7FF",
"# c #F5F5FF",
"$ c #F4F4FF",
"% c #F3F3FF",
"& c #F2F2FF",
"* c #0000F9",
"= c #0101F9",
"- c #0202F9",
"; c #E3E3FF",
"> c #FAFAFF",
", c #FFFFFF",
"' c #1B1BF9",
") c #0202F8",
"! c #1616F9",
"~ c #5353FA",
"{ c #E2E2FD",
"] c #A3A3FC",
"^ c #F6F6FE",
"/ c #5656FA",
"( c #4C4CFA",
"_ c #9898FC",
": c #2626F9",
"< c #F9F9FF",
"[ c #7272FB",
"} c #4747FA",
"| c #FCFCFE",
"1 c #DDDDFD",
"2 c #8B8BFB",
"3 c #9292FB",
"4 c #0F0FF8",
"5 c #F5F5FE",
"6 c #F1F1FE",
"7 c #0B0BF8",
"8 c #9C9CFC",
"9 c #6363FA",
"0 c #3434F9",
"a c #DFDFFD",
"b c #5252FA",
"c c #1515F8",
"d c #0404F8",
"e c #1010F8",
"f c #2D2DF9",
"g c #DCDCFD",
"h c #F8F8FF",
"i c #3232F9",
"j c #C2C2FD",
"k c #CBCBFD",
"l c #5D5DFA",
"m c #D2D2FD",
"n c #EBEBFE",
"o c #0707F8",
"p c #F4F4FE",
"q c #0303F8",
"r c #1F1FF9",
"s c #7070FB",
"t c #B4B4FC",
"u c #F7F7FE",
"v c #8080FB",
"w c #1D1DF9",
"x c #D3D3FD",
"y c #CECEFD",
"z c #7979FB",
"A c #2F2FF9",
"B c #5959FA",
"C c #F0F0FE",
"D c #4242FA",
"E c #B1B1FC",
"F c #E8E8FD",
"G c #5454FA",
"H c #8F8FFB",
"I c #4949FA",
"J c #0A0AF8",
"K c #0808F8",
"L c #2525F9",
"M c #8282FB",
"N c #FDFDFE",
"O c #EBEBFF",
".+@@@++++#####$$$$%%%%%&&%%%%%%&",
"$*======================------*;",
">*,,,,,,,,,,,,,,,,,,,,,,,,,,,,*$",
">*,,,,,,,,,,,,,,,,,,,,,,,,,,,,*$",
">*,,'**)!~{,,,,,,,,,,,,,,,,,,,*$",
">*,,'*]^/*(,,,,,,,,,,,,,,,,,,,*$",
">*,,'*],_*:,,,,,,,,,,,,,,,,,,,*$",
"<*,,'*]^/*[,,,,,,,,,,,,,,,,,,,*$",
"<*,,'****}|,,,,,,,,,,,,,,,,,,,*$",
"<*,,'*]1'*2,,,,,,,,,,,,,,,,,,,*$",
"<*,,'*],3*45,,,,,,,,,,,,,,,,,,*$",
"<*,,'*],67*8,,,,,,,,,,,,,,,,,,*$",
"<*,,'*],,9*0,abcdefg,,,,,,,,,,*$",
"h*,,,,,,,,,,,i)j5klm,,,,,,,,,,*$",
"h*,,,,,,,,,,n*o6,,,,,,,,,,,,,,*$",
"h*,,,,,,,,,,pq*rstu,,,,,,,,,,,*$",
"h*,,,,,,,,,,,v****wx,,,,,,,,,,*%",
"h*,,,,,,,,,,,,yzA**B,,,,,,,,,,*$",
"h*,,,,,,,,,,,,,,,[*(,,,,,,,,,,*$",
"h*,,,,,,,,,,CDEFCG*H,abcdefg,,*$",
"@*,,,,,,,,,,^IrJKLMN,i)j5klm,,*$",
"@*,,,,,,,,,,,,,,,,,,n*o6,,,,,,*#",
"@*,,,,,,,,,,,,,,,,,,pq*rstu,,,*#",
"@*,,,,,,,,,,,,,,,,,,,v****wx,,*#",
"@*,,,,,,,,,,,,,,,,,,,,yzA**B,,*#",
"@*,,,,,,,,,,,,,,,,,,,,,,,[*(,,*#",
"+*,,,,,,,,,,,,,,,,,,CDEFCG*H,,*#",
"+*,,,,,,,,,,,,,,,,,,^IrJKLMN,,*#",
"+*,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#",
"+*,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#",
"+******************************O",
",#####+++++################$$###"};
static const char * rss_xpm[] = {
"18 18 157 2",
" c None",
". c #DB742C",
"+ c #E47E36",
"@ c #E68239",
"# c #E7833A",
"$ c #E7843A",
"% c #E8853A",
"& c #E8863B",
"* c #E9873B",
"= c #E9883B",
"- c #EA893B",
"; c #EA8A3B",
"> c #EB8B3C",
", c #E78639",
"' c #DE772C",
") c #E6833A",
"! c #E57732",
"~ c #E5732E",
"{ c #E7782F",
"] c #EA7C31",
"^ c #EB8032",
"/ c #ED8433",
"( c #EF8734",
"_ c #F18B34",
": c #F38E35",
"< c #F49236",
"[ c #F69537",
"} c #F79738",
"| c #F99A39",
"1 c #F99C3D",
"2 c #E98B3B",
"3 c #DB772C",
"4 c #ED9B65",
"5 c #EE9457",
"6 c #EC8941",
"7 c #FA9C39",
"8 c #FB9E3A",
"9 c #F7983C",
"0 c #DE762B",
"a c #E37D37",
"b c #FDF3EC",
"c c #FFFFFF",
"d c #FFFFFE",
"e c #FCE6D5",
"f c #F8C295",
"g c #F49746",
"h c #F89838",
"i c #F59237",
"j c #E68338",
"k c #E58038",
"l c #FEF9F4",
"m c #FAC998",
"n c #F79A3D",
"o c #F28C35",
"p c #E88639",
"q c #E68238",
"r c #F09753",
"s c #F3A86C",
"t c #F7C192",
"u c #FCE5D1",
"v c #FEE8D1",
"w c #FAA54A",
"x c #EF8634",
"y c #E78439",
"z c #E78339",
"A c #F1964D",
"B c #F2903C",
"C c #F8AC63",
"D c #FDE7D1",
"E c #FEF3E6",
"F c #F9A24B",
"G c #EC7F32",
"H c #FEF4EC",
"I c #FFFEFD",
"J c #FDE7D3",
"K c #FAC089",
"L c #F7993C",
"M c #F99B3B",
"N c #FDD1A3",
"O c #FDE7D2",
"P c #F28F3B",
"Q c #E97A30",
"R c #E68138",
"S c #E88539",
"T c #FEEEDE",
"U c #FBAB57",
"V c #FCD0A4",
"W c #F7C49C",
"X c #E7752F",
"Y c #E57F38",
"Z c #F6AB64",
"` c #FAC189",
" . c #FDE7D0",
".. c #FFF9F2",
"+. c #F9A958",
"@. c #F59339",
"#. c #FCE2CC",
"$. c #FEF9F6",
"%. c #EB8744",
"&. c #E4702E",
"*. c #E47E37",
"=. c #E98739",
"-. c #FCC080",
";. c #FFFCF9",
">. c #FEEFE1",
",. c #F29D5B",
"'. c #F4BD9B",
"). c #E26C2D",
"!. c #E47D37",
"~. c #E9883A",
"{. c #FBBC7B",
"]. c #FBAF5E",
"^. c #FABC7D",
"/. c #F6BB8D",
"(. c #F9DBC7",
"_. c #FBE7DD",
":. c #E0672C",
"<. c #E37C37",
"[. c #EA8A3A",
"}. c #FDDCBB",
"|. c #FAAF64",
"1. c #FBE0C8",
"2. c #FCE8DB",
"3. c #F1AE85",
"4. c #E47946",
"5. c #DD632B",
"6. c #E37B37",
"7. c #FEF0E1",
"8. c #F9BE89",
"9. c #F5B27D",
"0. c #E98142",
"a. c #EA8F5B",
"b. c #E58A5F",
"c. c #DC602A",
"d. c #E27A36",
"e. c #FCBE7C",
"f. c #FEF5EB",
"g. c #FDE4CE",
"h. c #F39342",
"i. c #F09759",
"j. c #EA8D59",
"k. c #E57C44",
"l. c #E89774",
"m. c #DA5D29",
"n. c #E27936",
"o. c #DD762C",
"p. c #DD6530",
"q. c #DC752C",
"r. c #E37D39",
"s. c #DE762D",
"t. c #E78438",
"u. c #E7823A",
"v. c #E68139",
"w. c #E58039",
"x. c #E57E39",
"y. c #E47D38",
"z. c #E37C38",
" . + @ # $ % & * = - ; > , ' ",
" ) ! ~ { ] ^ / ( _ : < [ } | 1 2 ",
"3 ! ~ 4 5 6 / ( _ : < [ } | 7 8 9 0 ",
"a ~ { b c d e f g < [ } | 7 8 h i j ",
"k { ] b c c c c l m n | 7 8 h i o p ",
"q ] ^ r s t u d c c v w 8 h i o x y ",
"z ^ / A B : < C D c c E F i o x G q ",
"y / ( H I J K L M N c c O P x G Q R ",
"S ( _ H c c c T U 8 V c c W G Q X Y ",
"p _ : Z ` .c c ..+.@.#.c $.%.X &.*.",
"=.: < [ } | -.;.c >.P ,.I c '.&.).!.",
"~.< [ n {.].8 ^.c c /.G (.c _.).:.<.",
"[.[ } }.c I |.i 1.c 2.Q 3.c c 4.5.6.",
"[.} | 7.c c 8.o 9.c c 0.a.c c b.c.d.",
", | 7 e.f.g.h.x i.c c j.k.c c l.m.n.",
"o.1 8 h i o x G Q X &.).:.5.c.m.p.q.",
" 2 9 i o x G Q X &.).:.5.c.m.p.r. ",
" s.t.* % $ u.v.w.x.y.y.z.n.q. "};

View File

@ -24,7 +24,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 345
#define RD_VERSION_DATABASE 346
#endif // DBVERSION_H

View File

@ -1724,7 +1724,7 @@ unsigned RDFeed::create(const QString &keyname,bool enable_users,
//
if(enable_users) {
sql=QString("select LOGIN_NAME from USERS where ")+
"(ADMIN_USERS_PRIV='N')&&(ADMIN_CONFIG_PRIV='N')";
"(ADMIN_RSS_PRIV='N')&&(ADMIN_CONFIG_PRIV='N')";
q=new RDSqlQuery(sql);
while(q->next()) {
sql=QString("insert into FEED_PERMS set ")+

View File

@ -2,7 +2,7 @@
//
// Abstract a Rivendell User.
//
// (C) Copyright 2002-2003,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -248,6 +248,19 @@ void RDUser::setAdminConfig(bool priv) const
}
bool RDUser::adminRss() const
{
return RDBool(RDGetSqlValue("USERS","LOGIN_NAME",user_name,
"ADMIN_RSS_PRIV").toString());
}
void RDUser::setAdminRss(bool priv) const
{
SetRow("ADMIN_RSS_PRIV",priv);
}
bool RDUser::createCarts() const
{
return RDBool(RDGetSqlValue("USERS","LOGIN_NAME",user_name,

View File

@ -55,6 +55,8 @@ class RDUser
void setWebapiAuthTimeout(int sec) const;
bool adminConfig() const;
void setAdminConfig(bool priv) const;
bool adminRss() const;
void setAdminRss(bool priv) const;
bool createCarts() const;
void setCreateCarts(bool priv) const;
bool deleteCarts() const;

View File

@ -166,15 +166,27 @@ EditUser::EditUser(const QString &user,QWidget *parent)
user_admin_config_button=new QCheckBox(user_admin_group);
user_admin_config_button->setGeometry(10,21,15,15);
connect(user_admin_config_button,SIGNAL(toggled(bool)),
this,SLOT(adminToggledData(bool)));
QLabel *user_admin_config_label=
this,SLOT(adminConfigToggledData(bool)));
user_admin_config_label=
new QLabel(user_admin_config_button,tr("Administer S&ystem"),
user_admin_group);
user_admin_config_label->setGeometry(192,21,150,19);
// user_admin_config_label->setGeometry(192,21,150,19);
user_admin_config_label->setGeometry(30,21,150,19);
user_admin_config_label->setFont(subLabelFont());
user_admin_config_label->setAlignment(Qt::AlignLeft);
user_admin_rss_button=new QCheckBox(user_admin_group);
user_admin_rss_button->setGeometry(172,21,15,15);
connect(user_admin_rss_button,SIGNAL(toggled(bool)),
this,SLOT(adminRssToggledData(bool)));
user_admin_rss_label=
new QLabel(user_admin_rss_button,tr("Administer RSS Feeds"),
user_admin_group);
user_admin_rss_label->setGeometry(192,21,150,19);
// user_admin_rss_label->setGeometry(30,21,150,19);
user_admin_rss_label->setFont(subLabelFont());
user_admin_rss_label->setAlignment(Qt::AlignLeft);
//
// Production Group Priviledges
//
@ -437,31 +449,37 @@ EditUser::EditUser(const QString &user,QWidget *parent)
user_web_box->setChecked(user_user->enableWeb());
if(user_user->adminConfig()) {
user_admin_config_button->setChecked(true);
adminToggledData(true);
adminConfigToggledData(true);
}
else {
user_create_carts_button->setChecked(user_user->createCarts());
user_delete_carts_button->setChecked(user_user->deleteCarts());
user_modify_carts_button->setChecked(user_user->modifyCarts());
user_edit_audio_button->setChecked(user_user->editAudio());
user_edit_catches_button->setChecked(user_user->editCatches());
user_voicetrack_log_button->setChecked(user_user->voicetrackLog());
user_webget_login_button->setChecked(user_user->webgetLogin());
if(user_user->adminRss()) {
user_admin_rss_button->setChecked(true);
adminRssToggledData(true);
}
else {
user_create_carts_button->setChecked(user_user->createCarts());
user_delete_carts_button->setChecked(user_user->deleteCarts());
user_modify_carts_button->setChecked(user_user->modifyCarts());
user_edit_audio_button->setChecked(user_user->editAudio());
user_edit_catches_button->setChecked(user_user->editCatches());
user_voicetrack_log_button->setChecked(user_user->voicetrackLog());
user_webget_login_button->setChecked(user_user->webgetLogin());
user_create_log_button->setChecked(user_user->createLog());
user_delete_log_button->setChecked(user_user->deleteLog());
user_delete_rec_button->setChecked(user_user->deleteRec());
user_create_log_button->setChecked(user_user->createLog());
user_delete_log_button->setChecked(user_user->deleteLog());
user_delete_rec_button->setChecked(user_user->deleteRec());
user_playout_log_button->setChecked(user_user->playoutLog());
user_arrange_log_button->setChecked(user_user->arrangeLog());
user_addto_log_button->setChecked(user_user->addtoLog());
user_removefrom_log_button->setChecked(user_user->removefromLog());
user_config_panels_button->setChecked(user_user->configPanels());
user_modify_template_button->setChecked(user_user->modifyTemplate());
user_playout_log_button->setChecked(user_user->playoutLog());
user_arrange_log_button->setChecked(user_user->arrangeLog());
user_addto_log_button->setChecked(user_user->addtoLog());
user_removefrom_log_button->setChecked(user_user->removefromLog());
user_config_panels_button->setChecked(user_user->configPanels());
user_modify_template_button->setChecked(user_user->modifyTemplate());
user_add_podcast_button->setChecked(user_user->addPodcast());
user_edit_podcast_button->setChecked(user_user->editPodcast());
user_delete_podcast_button->setChecked(user_user->deletePodcast());
user_add_podcast_button->setChecked(user_user->addPodcast());
user_edit_podcast_button->setChecked(user_user->editPodcast());
user_delete_podcast_button->setChecked(user_user->deletePodcast());
}
}
//
@ -544,7 +562,23 @@ void EditUser::feedsData()
}
void EditUser::adminToggledData(bool state)
void EditUser::adminConfigToggledData(bool state)
{
user_admin_rss_button->setDisabled(state);
user_admin_rss_label->setDisabled(state);
adminToggled(state);
}
void EditUser::adminRssToggledData(bool state)
{
user_admin_config_button->setDisabled(state);
user_admin_config_label->setDisabled(state);
adminToggled(state);
}
void EditUser::adminToggled(bool state)
{
user_web_box->setDisabled(state);
user_web_label->setDisabled(state);
@ -587,6 +621,7 @@ void EditUser::adminToggledData(bool state)
user_voicetrack_log_label->setDisabled(state);
user_webget_login_label->setDisabled(state);
user_assign_perms_button->setDisabled(state);
user_assign_svcs_button->setDisabled(state);
user_assign_feeds_button->setDisabled(state);
}
@ -602,6 +637,7 @@ void EditUser::okData()
user_user->setWebapiAuthTimeout(user_webapi_auth_spin->value());
user_user->setEnableWeb(user_web_box->isChecked());
user_user->setAdminConfig(user_admin_config_button->isChecked());
user_user->setAdminRss(user_admin_rss_button->isChecked());
user_user->setCreateCarts(user_create_carts_button->isChecked());
user_user->setDeleteCarts(user_delete_carts_button->isChecked());
user_user->setModifyCarts(user_modify_carts_button->isChecked());

View File

@ -46,7 +46,9 @@ class EditUser : public RDDialog
void groupsData();
void servicesData();
void feedsData();
void adminToggledData(bool state);
void adminConfigToggledData(bool state);
void adminRssToggledData(bool state);
void adminToggled(bool state);
void okData();
void cancelData();
@ -70,6 +72,7 @@ class EditUser : public RDDialog
QGroupBox *user_onair_group;
QGroupBox *user_podcast_group;
QCheckBox *user_admin_config_button;
QCheckBox *user_admin_rss_button;
QCheckBox *user_create_carts_button;
QCheckBox *user_delete_carts_button;
QCheckBox *user_modify_carts_button;
@ -92,6 +95,8 @@ class EditUser : public RDDialog
QPushButton *user_assign_perms_button;
QPushButton *user_assign_svcs_button;
QPushButton *user_assign_feeds_button;
QLabel *user_admin_config_label;
QLabel *user_admin_rss_label;
QLabel *user_create_carts_label;
QLabel *user_delete_carts_label;
QLabel *user_modify_carts_label;

View File

@ -35,6 +35,7 @@
//
#include "../icons/admin.xpm"
#include "../icons/localuser.xpm"
#include "../icons/rss.xpm"
#include "../icons/user.xpm"
ListUsers::ListUsers(const QString &admin_name,QWidget *parent)
@ -56,6 +57,7 @@ ListUsers::ListUsers(const QString &admin_name,QWidget *parent)
//
list_admin_map=new QPixmap(admin_xpm);
list_localuser_map=new QPixmap(localuser_xpm);
list_rss_map=new QPixmap(rss_xpm);
list_user_map=new QPixmap(user_xpm);
//
@ -288,12 +290,13 @@ void ListUsers::RefreshList()
list_users_view->clear();
sql=QString("select ")+
"ADMIN_CONFIG_PRIV,"+ // 00
"LOGIN_NAME,"+ // 01
"FULL_NAME,"+ // 02
"DESCRIPTION,"+ // 03
"EMAIL_ADDRESS,"+ // 04
"PHONE_NUMBER,"+ // 05
"LOCAL_AUTH "+ // 06
"ADMIN_RSS_PRIV,"+ // 01
"LOGIN_NAME,"+ // 02
"FULL_NAME,"+ // 03
"DESCRIPTION,"+ // 04
"EMAIL_ADDRESS,"+ // 05
"PHONE_NUMBER,"+ // 06
"LOCAL_AUTH "+ // 07
"from USERS";
q=new RDSqlQuery(sql);
while (q->next()) {
@ -302,19 +305,24 @@ void ListUsers::RefreshList()
item->setPixmap(0,*list_admin_map);
}
else {
if(q->value(6).toString()=="Y") {
item->setPixmap(0,*list_localuser_map);
if(q->value(1).toString()=="Y") {
item->setPixmap(0,*list_rss_map);
}
else {
item->setPixmap(0,*list_user_map);
if(q->value(7).toString()=="Y") {
item->setPixmap(0,*list_localuser_map);
}
else {
item->setPixmap(0,*list_user_map);
}
}
}
item->setText(1,q->value(1).toString());
item->setText(2,q->value(2).toString());
item->setText(3,q->value(3).toString());
item->setText(4,q->value(4).toString());
item->setText(5,q->value(5).toString());
item->setText(6,q->value(6).toString());
item->setText(1,q->value(2).toString());
item->setText(2,q->value(3).toString());
item->setText(3,q->value(4).toString());
item->setText(4,q->value(5).toString());
item->setText(5,q->value(6).toString());
item->setText(6,q->value(7).toString());
}
delete q;
}
@ -327,11 +335,12 @@ void ListUsers::RefreshItem(RDListViewItem *item)
sql=QString("select ")+
"ADMIN_CONFIG_PRIV,"+ // 00
"FULL_NAME,"+ // 01
"DESCRIPTION,"+ // 02
"EMAIL_ADDRESS,"+ // 03
"PHONE_NUMBER,"+ // 04
"LOCAL_AUTH "+ // 05
"ADMIN_RSS_PRIV,"+ // 01
"FULL_NAME,"+ // 02
"DESCRIPTION,"+ // 03
"EMAIL_ADDRESS,"+ // 04
"PHONE_NUMBER,"+ // 05
"LOCAL_AUTH "+ // 06
"from USERS where "+
"LOGIN_NAME=\""+RDEscapeString(item->text(1))+"\"";
q=new RDSqlQuery(sql);
@ -340,18 +349,23 @@ void ListUsers::RefreshItem(RDListViewItem *item)
item->setPixmap(0,*list_admin_map);
}
else {
if(q->value(3).toString()=="Y") {
item->setPixmap(0,*list_localuser_map);
if(q->value(1).toString()=="Y") {
item->setPixmap(0,*list_rss_map);
}
else {
item->setPixmap(0,*list_user_map);
if(q->value(4).toString()=="Y") {
item->setPixmap(0,*list_localuser_map);
}
else {
item->setPixmap(0,*list_user_map);
}
}
}
item->setText(2,q->value(1).toString());
item->setText(3,q->value(2).toString());
item->setText(4,q->value(3).toString());
item->setText(5,q->value(4).toString());
item->setText(6,q->value(5).toString());
item->setText(2,q->value(2).toString());
item->setText(3,q->value(3).toString());
item->setText(4,q->value(4).toString());
item->setText(5,q->value(5).toString());
item->setText(6,q->value(6).toString());
}
delete q;
}

View File

@ -58,6 +58,7 @@ class ListUsers : public RDDialog
QString list_admin_name;
QPixmap *list_admin_map;
QPixmap *list_localuser_map;
QPixmap *list_rss_map;
QPixmap *list_user_map;
};

View File

@ -2,7 +2,7 @@
//
// Login widget for RDAdmin.
//
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -20,17 +20,12 @@
#include <math.h>
#include <qdialog.h>
#include <qstring.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qlineedit.h>
#include <q3textedit.h>
#include <qlabel.h>
#include <qpainter.h>
#include <qevent.h>
#include <qmessagebox.h>
#include <q3buttongroup.h>
#include <rdtextvalidator.h>
@ -39,15 +34,11 @@
Login::Login(QString *username,QString *password,QWidget *parent)
: RDDialog(parent)
{
setModal(true);
//
// Fix the Window Size
//
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
setMinimumSize(sizeHint());
setMaximumSize(sizeHint());
setWindowTitle("RDAdmin");
login_name=username;

View File

@ -120,12 +120,14 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
exit(0);
}
rda->user()->setName(admin_username);
bool config_priv=rda->user()->adminConfig();
bool rss_priv=rda->user()->adminRss();
if(!rda->user()->checkPassword(admin_password,false)) {
QMessageBox::warning(this,"Login Failed","Login Failed!.\n");
exit(1);
}
else {
if(!rda->user()->adminConfig()) {
if((!config_priv)&&(!rss_priv)) {
QMessageBox::warning(this,tr("Insufficient Priviledges"),
tr("This account has insufficient priviledges for this operation."));
exit(1);
@ -160,6 +162,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
users_button->setGeometry(10,50,80,60);
users_button->setFont(buttonFont());
users_button->setText(tr("Manage\n&Users"));
users_button->setEnabled(config_priv);
connect(users_button,SIGNAL(clicked()),this,SLOT(manageUsersData()));
//
@ -169,6 +172,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
groups_button->setGeometry(10,120,80,60);
groups_button->setFont(buttonFont());
groups_button->setText(tr("Manage\n&Groups"));
groups_button->setEnabled(config_priv);
connect(groups_button,SIGNAL(clicked()),this,SLOT(manageGroupsData()));
//
@ -178,6 +182,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
services_button->setGeometry(100,50,80,60);
services_button->setFont(buttonFont());
services_button->setText(tr("Manage\n&Services"));
services_button->setEnabled(config_priv);
connect(services_button,SIGNAL(clicked()),this,SLOT(manageServicesData()));
//
@ -187,6 +192,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
stations_button->setGeometry(100,120,80,60);
stations_button->setFont(buttonFont());
stations_button->setText(tr("Manage\nHo&sts"));
stations_button->setEnabled(config_priv);
connect(stations_button,SIGNAL(clicked()),this,SLOT(manageStationsData()));
//
@ -196,6 +202,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
reports_button->setGeometry(190,50,80,60);
reports_button->setFont(buttonFont());
reports_button->setText(tr("Manage\nR&eports"));
reports_button->setEnabled(config_priv);
connect(reports_button,SIGNAL(clicked()),this,SLOT(reportsData()));
//
@ -205,6 +212,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
podcasts_button->setGeometry(280,50,80,60);
podcasts_button->setFont(buttonFont());
podcasts_button->setText(tr("Manage\n&Feeds"));
podcasts_button->setEnabled(config_priv||rss_priv);
connect(podcasts_button,SIGNAL(clicked()),this,SLOT(podcastsData()));
//
@ -214,6 +222,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
system_button->setGeometry(190,120,80,60);
system_button->setFont(buttonFont());
system_button->setText(tr("System\nSettings"));
system_button->setEnabled(config_priv);
connect(system_button,SIGNAL(clicked()),this,SLOT(systemSettingsData()));
//
@ -223,6 +232,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
schedcodes_button->setGeometry(280,120,80,60);
schedcodes_button->setFont(buttonFont());
schedcodes_button->setText(tr("Scheduler\nCodes"));
schedcodes_button->setEnabled(config_priv);
connect(schedcodes_button,SIGNAL(clicked()),this,SLOT(manageSchedCodes()));
//
@ -232,6 +242,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
repl_button->setGeometry(100,190,80,60);
repl_button->setFont(buttonFont());
repl_button->setText(tr("Manage\nReplicators"));
repl_button->setEnabled(config_priv);
connect(repl_button,SIGNAL(clicked()),this,SLOT(manageReplicatorsData()));
//
@ -241,6 +252,7 @@ MainWidget::MainWidget(RDConfig *config,RDWidget *parent)
info_button->setGeometry(190,190,80,60);
info_button->setFont(buttonFont());
info_button->setText(tr("System\nInfo"));
info_button->setEnabled(config_priv||rss_priv);
connect(info_button,SIGNAL(clicked()),this,SLOT(systemInfoData()));
//

View File

@ -4775,6 +4775,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -4520,6 +4520,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -4716,6 +4716,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -3758,6 +3758,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -4425,6 +4425,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -4425,6 +4425,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -4500,6 +4500,10 @@ Permissions</source>
<source>E-Mail Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administer RSS Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditUserPerms</name>

View File

@ -40,6 +40,22 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// NEW SCHEMA REVERSIONS GO HERE...
//
// Revert 346
//
if((cur_schema==346)&&(set_schema<cur_schema)) {
DropColumn("USERS","ADMIN_RSS_PRIV");
sql=QString("alter table USERS add column ")+
"ADMIN_USERS_PRIV enum('N','Y') not null default 'N' "+
"after ADMIN_CONFIG_PRIV";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(--cur_schema);
}
//
// Revert 345
//

View File

@ -161,7 +161,7 @@ void MainObject::InitializeSchemaMap() {
global_version_map["3.2"]=311;
global_version_map["3.3"]=314;
global_version_map["3.4"]=317;
global_version_map["3.5"]=345;
global_version_map["3.5"]=346;
}

View File

@ -10427,6 +10427,21 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
if((cur_schema<346)&&(set_schema>cur_schema)) {
sql=QString("alter table USERS drop column ADMIN_USERS_PRIV");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table USERS add column ")+
"ADMIN_RSS_PRIV enum('N','Y') not null default 'N' "+
"after ADMIN_CONFIG_PRIV";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
// NEW SCHEMA UPDATES GO HERE...