From c2b806cf0d9df90eed68564837f9469890b2a246 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sun, 25 Jan 2015 01:43:07 +0530 Subject: [PATCH] users: Rename a POSIX user when Plinth user is renamed --- actions/rename-user | 36 +++++++++++++++++++++++++++++++++++ plinth/modules/users/forms.py | 8 ++++++++ 2 files changed, 44 insertions(+) create mode 100755 actions/rename-user diff --git a/actions/rename-user b/actions/rename-user new file mode 100755 index 000000000..b0c9fefa4 --- /dev/null +++ b/actions/rename-user @@ -0,0 +1,36 @@ +#!/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. + +old_username="$1" +new_username="$2" + +getent passwd "$old_username" +if [ $? -ne 0 ]; then + echo "Failed: user not found" + exit +fi + +usermod -l "$new_username" "$old_username" +if [ $? -eq 0 ]; then + echo "Success: user renamed" +else + echo "Failed: user rename failed" + exit 2 +fi diff --git a/plinth/modules/users/forms.py b/plinth/modules/users/forms.py index 28454f060..211fd2fe9 100644 --- a/plinth/modules/users/forms.py +++ b/plinth/modules/users/forms.py @@ -88,6 +88,14 @@ class UserUpdateForm(forms.ModelForm): self.request, _('Setting active status for POSIX system user failed.')) + try: + if self.username != user.get_username(): + actions.superuser_run('rename-user', + [self.username, user.get_username()]) + except ActionError: + messages.error(self.request, + _('Renaming POSIX system user failed.')) + return user