From 46dd2225f734f344ccc2e83f8b0bfb3b2683bc2c Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 4 Jan 2015 12:30:00 -0500 Subject: [PATCH] Delete posix user when deleting plinth user. --- actions/delete-user | 34 ++++++++++++++++++++++++++++++++ plinth/modules/users/__init__.py | 14 +++++++++++++ 2 files changed, 48 insertions(+) create mode 100755 actions/delete-user diff --git a/actions/delete-user b/actions/delete-user new file mode 100755 index 000000000..e5dd0ac4d --- /dev/null +++ b/actions/delete-user @@ -0,0 +1,34 @@ +#!/bin/sh +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +# Must be run as root. + +username="$1" + +getent passwd "$username" +if [ $? -ne 0 ]; then + echo "Failed: user not found" + exit +fi + +userdel "$username" +if [ $? -eq 0 ]; then + echo "Success: user deleted" +else + echo "Failed: userdel error" +fi diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index 6a68e6bac..65471cd80 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -19,9 +19,12 @@ Plinth module to manage users """ +from django.db.models.signals import post_delete +from django.contrib.auth.models import User from gettext import gettext as _ from plinth import cfg +from plinth import actions __all__ = ['init'] @@ -33,3 +36,14 @@ def init(): menu = cfg.main_menu.get('system:index') menu.add_urlname(_('Users and Groups'), 'glyphicon-user', 'users:index', 15) + + post_delete.connect(delete_posix_user) + + +def delete_posix_user(sender, instance=None, **kwargs): + try: + instance + except User.DoesNotExist: + pass + else: + actions.superuser_run('delete-user', [instance.username])