author | umopapisdn <umopapisdn> | 2002-09-28 06:36:30 (UTC) |
---|---|---|
committer | umopapisdn <umopapisdn> | 2002-09-28 06:36:30 (UTC) |
commit | 8a95ca149ff5eedc9215bb012c8d7d09cdcaf96c (patch) (side-by-side diff) | |
tree | 50aed468fa8888266c589ce47131d0acaf7f82b7 | |
parent | 996c0d02d16c185acc3190baa5b4a1fc934e730c (diff) | |
download | opie-8a95ca149ff5eedc9215bb012c8d7d09cdcaf96c.zip opie-8a95ca149ff5eedc9215bb012c8d7d09cdcaf96c.tar.gz opie-8a95ca149ff5eedc9215bb012c8d7d09cdcaf96c.tar.bz2 |
Now actually makes the homedirectories owned by the user they belong to. :)
-rw-r--r-- | noncore/settings/usermanager/passwd.cpp | 5 | ||||
-rw-r--r-- | noncore/settings/usermanager/userdialog.cpp | 10 | ||||
-rw-r--r-- | noncore/settings/usermanager/userdialog.h | 2 | ||||
-rw-r--r-- | noncore/settings/usermanager/usermanager.pro | 2 |
4 files changed, 15 insertions, 4 deletions
diff --git a/noncore/settings/usermanager/passwd.cpp b/noncore/settings/usermanager/passwd.cpp index 310cef8..5063661 100644 --- a/noncore/settings/usermanager/passwd.cpp +++ b/noncore/settings/usermanager/passwd.cpp @@ -1,29 +1,30 @@ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "passwd.h" // Needed for crypt_make_salt(); #include <sys/types.h> +#include <sys/stat.h> #include <unistd.h> #include <time.h> Passwd::Passwd() { } Passwd::~Passwd() { } // This function is taken from 'busybox'. int Passwd::i64c(int i) { if (i <= 0) return ('.'); if (i == 1) return ('/'); @@ -126,42 +127,44 @@ bool Passwd::searchUser(QRegExp &userRegExp) { userString=(*(tempStringList.begin())); splitPasswdEntry(userString); } return true; } bool Passwd::findUser(const char *username) { QRegExp userRegExp(QString("^%1\\:").arg(username)); return searchUser(userRegExp); } bool Passwd::findUser(int uid) { QRegExp userRegExp(QString(":%1\\:").arg(uid)); return searchUser(userRegExp); } -bool Passwd::addUser(QString pw_name, QString pw_passwd, int pw_uid, int pw_gid, QString pw_gecos,QString pw_dir, QString pw_shell, bool createGroup=true) { +bool Passwd::addUser(QString pw_name, QString pw_passwd, int pw_uid, int pw_gid, QString pw_gecos,QString pw_dir, QString pw_shell, bool createGroup) { QString tempString; if((createGroup) && (!(findGroup(pw_gid)))) addGroup(pw_name,pw_gid); pw_passwd = crypt(pw_passwd, crypt_make_salt()); tempString=pw_name+":"+pw_passwd+":"+QString::number(pw_uid)+":"+QString::number(pw_gid)+":"+pw_gecos+":"+pw_dir+":"+pw_shell; passwdStringList.append(tempString); // Make home dir. QDir d; if(!(d.exists(pw_dir))) { d.mkdir(pw_dir); + chown(pw_dir,pw_uid,pw_gid); + chmod(pw_dir,S_IRUSR|S_IWUSR|S_IXUSR); } return 1; } bool Passwd::updateUser(QString login) { QRegExp userRegExp(QString("^%1\\:").arg(login)); for(QStringList::Iterator it=passwdStringList.begin(); it!=passwdStringList.end(); ++it) { if(userRegExp.find((*it),0)!=-1) { *it=QString(pw_name+":"+pw_passwd+":"+QString::number(pw_uid)+":"+QString::number(pw_gid)+":"+pw_gecos+":"+pw_dir+":"+pw_shell); return true; } } return false; } bool Passwd::deleteUser(QRegExp &userRegExp, bool delGroup) { diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp index f31775d..6940a3b 100644 --- a/noncore/settings/usermanager/userdialog.cpp +++ b/noncore/settings/usermanager/userdialog.cpp @@ -24,33 +24,34 @@ #include "passwd.h" /** * UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups. * */ UserDialog::UserDialog(QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) { QVBoxLayout *layout = new QVBoxLayout(this); myTabWidget=new QTabWidget(this,"User Tab Widget"); layout->addWidget(myTabWidget); setupTab1(); setupTab2(); // And also fill the listview & the combobox with all available groups. for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) { accounts->splitGroupEntry(*it); - new QListViewItem(groupsListView,accounts->gr_name); + //new QListViewItem(groupsListView,accounts->gr_name); + new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox); groupComboBox->insertItem(accounts->gr_name); } showMaximized(); } /** * Empty destructor. * */ UserDialog::~UserDialog() { } /** * Creates the first tab, all userinfo is here. * @@ -142,32 +143,33 @@ void UserDialog::setupTab1() { } /** * Creates the second tab containing additional groups for the user. * */ void UserDialog::setupTab2() { QWidget *tabpage = new QWidget(myTabWidget,"page2"); QVBoxLayout *layout = new QVBoxLayout(tabpage); layout->setMargin(5); // Additional groups groupsListView=new QListView(tabpage,"groups"); groupsListView->addColumn("Additional groups"); groupsListView->setColumnWidthMode(0,QListView::Maximum); groupsListView->setMultiSelection(true); + groupsListView->setAllColumnsShowFocus(false); layout->addSpacing(5); // Grouplist layout->addWidget(groupsListView); myTabWidget->addTab(tabpage,"User Groups"); } /** * Static function that creates the userinfo dialog. * The user will be prompted to add a user. * * @param uid This is a suggested available UID. * @param gid This is a suggested available GID. * * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. @@ -302,18 +304,22 @@ bool UserDialog::editUser(const char *username) { * */ void UserDialog::accept() { // Add checking... valid username? username taken? if(loginLineEdit->text().isEmpty()) { QMessageBox::information(0,"Empty Login","Please enter a login."); return; } QDialog::accept(); } /** * This slot is called when the usericon is clicked, this loads (should) the iconselector. * */ void UserDialog::clickedPicture() { - QMessageBox::information(0,"Sorry!","Icon selection not yet implemented.\nComming real soon now! (tm)"); + QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED,"/opt/QtPalmtop/pics"); + // OFileDialog *fd=new OFileDialog("Select Icon",this, OFileSelector::OPEN, OFileSelector::EXTENDED,"/"); + //fd->showMaximized(); + //fd->exec(); + QMessageBox::information(0,"Sorry!","Icon selection not yet implemented.\nComming real soon now! (tm)\n"+filename); } diff --git a/noncore/settings/usermanager/userdialog.h b/noncore/settings/usermanager/userdialog.h index b44de9e..df54269 100644 --- a/noncore/settings/usermanager/userdialog.h +++ b/noncore/settings/usermanager/userdialog.h @@ -5,32 +5,34 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef USERDIALOG_H #define USERDIALOG_H #include <qdialog.h> #include <qlineedit.h> #include <qcombobox.h> #include <qlistview.h> #include <qtabwidget.h> #include <qpushbutton.h> #include <qpe/resource.h> +#include <opie/ofiledialog.h> + class UserDialog : public QDialog { Q_OBJECT private: QTabWidget *myTabWidget; QPushButton *picturePushButton; QLineEdit *loginLineEdit; QLineEdit *uidLineEdit; QLineEdit *gecosLineEdit; QLineEdit *passwordLineEdit; QComboBox *shellComboBox; QComboBox *groupComboBox; QListView *groupsListView; QStringList groupMembers; QString pictureLocation; diff --git a/noncore/settings/usermanager/usermanager.pro b/noncore/settings/usermanager/usermanager.pro index fc45f93..2f3212f 100644 --- a/noncore/settings/usermanager/usermanager.pro +++ b/noncore/settings/usermanager/usermanager.pro @@ -1,10 +1,10 @@ TEMPLATE = app #CONFIG = qt warn_on debug CONFIG = qt warn_on release HEADERS = usermanager.h userdialog.h groupdialog.h passwd.h SOURCES = usermanager.cpp userdialog.cpp groupdialog.cpp passwd.h main.cpp INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include -LIBS += -lqpe -lcrypt +LIBS += -lqpe -lopie -lcrypt TARGET = usermanager DESTDIR = $(OPIEDIR)/bin |