From 262bbd3e03b21635f2877c659c486ed64e80a5b4 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Wed, 25 May 2016 19:15:40 +0200 Subject: [PATCH] Clone user UI --- useradmin/edit_user.cgi | 18 ++++++++++++++++-- useradmin/lang/en | 1 + useradmin/save_user.cgi | 4 ++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/useradmin/edit_user.cgi b/useradmin/edit_user.cgi index 1d2c96301..70e7acf6a 100755 --- a/useradmin/edit_user.cgi +++ b/useradmin/edit_user.cgi @@ -7,13 +7,22 @@ use Time::Local; &ReadParse(); # Show header and get the user +@ulist = &list_users(); $n = $in{'user'}; -if ($n eq "") { +if ($n eq '') { + # Creating a new user $access{'ucreate'} || &error($text{'uedit_ecreate'}); &ui_print_header(undef, $text{'uedit_title2'}, "", "create_user"); + if ($in{'clone'} ne '') { + ($clone_hash) = grep { $_->{'user'} eq $in{'clone'} } @ulist; + $clone_hash || &error($text{'uedit_egone'}); + %uinfo = %$clone_hash; + &can_edit_user(\%access, \%uinfo) || &error($text{'uedit_eedit'}); + $uinfo{'user'} = ''; + } } else { - @ulist = &list_users(); + # Editing an existing one ($uinfo_hash) = grep { $_->{'user'} eq $n } @ulist; $uinfo_hash || &error($text{'uedit_egone'}); %uinfo = %$uinfo_hash; @@ -597,6 +606,11 @@ if ($n ne "") { } } + # Clone user + if ($access{'ucreate'}) { + push(@buts, [ "clone", $text{'edit_clone'} ]); + } + # Delete user if ($access{'udelete'}) { push(@buts, [ "delete", $text{'delete'} ]); diff --git a/useradmin/lang/en b/useradmin/lang/en index 41117946b..2fd63e5c0 100644 --- a/useradmin/lang/en +++ b/useradmin/lang/en @@ -134,6 +134,7 @@ uedit_uid_def=Automatic uedit_uid_calc=Calculated uedit_disabled=Login temporarily disabled uedit_sys=System default +uedit_clone=Clone User usave_err=Failed to save user usave_eedit=You cannot edit this user diff --git a/useradmin/save_user.cgi b/useradmin/save_user.cgi index 6456b43c6..e79365322 100755 --- a/useradmin/save_user.cgi +++ b/useradmin/save_user.cgi @@ -25,6 +25,10 @@ elsif ($in{'delete'}) { &redirect("delete_user.cgi?user=".&urlize($in{'old'})); return; } +elsif ($in{'clone'}) { + &redirect("edit_user.cgi?clone=".&urlize($in{'old'})); + return; + } # Build list of used UIDs and GIDs &build_user_used(\%used);