mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 23:00:55 +03:00
Feature: Clone existing user via web admin (#259)
UI based cloning of an existing user. The "add user" screen is prepopulated with existing user data. Resolves drakkan/sftpgo#225
This commit is contained in:
21
httpd/web.go
21
httpd/web.go
@@ -678,7 +678,26 @@ func handleGetWebUsers(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func handleWebAddUserGet(w http.ResponseWriter, r *http.Request) {
|
||||
renderAddUserPage(w, dataprovider.User{Status: 1}, "")
|
||||
if r.URL.Query().Get("cloneFromId") != "" {
|
||||
id, err := strconv.ParseInt(r.URL.Query().Get("cloneFromId"), 10, 64)
|
||||
if err != nil {
|
||||
renderBadRequestPage(w, err)
|
||||
return
|
||||
}
|
||||
user, err := dataprovider.GetUserByID(id)
|
||||
if err == nil {
|
||||
user.ID = 0
|
||||
user.Username = ""
|
||||
renderAddUserPage(w, user, "")
|
||||
} else if _, ok := err.(*dataprovider.RecordNotFoundError); ok {
|
||||
renderNotFoundPage(w, err)
|
||||
} else {
|
||||
renderInternalServerErrorPage(w, err)
|
||||
}
|
||||
} else {
|
||||
user := dataprovider.User{Status: 1}
|
||||
renderAddUserPage(w, user, "")
|
||||
}
|
||||
}
|
||||
|
||||
func handleWebUpdateUserGet(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -147,6 +147,16 @@
|
||||
enabled: false
|
||||
};
|
||||
|
||||
$.fn.dataTable.ext.buttons.clone = {
|
||||
text: 'Clone',
|
||||
action: function (e, dt, node, config) {
|
||||
var userID = dt.row({ selected: true }).data()[0];
|
||||
var path = '{{.UserURL}}' + "?cloneFromId=" + userID;
|
||||
window.location.href = path;
|
||||
},
|
||||
enabled: false
|
||||
};
|
||||
|
||||
$.fn.dataTable.ext.buttons.delete = {
|
||||
text: 'Delete',
|
||||
action: function (e, dt, node, config) {
|
||||
@@ -212,7 +222,7 @@
|
||||
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||
select: true,
|
||||
buttons: [
|
||||
'add', 'edit', 'delete', 'quota_scan'
|
||||
'add', 'edit', 'clone', 'delete', 'quota_scan'
|
||||
],
|
||||
"columnDefs": [
|
||||
{
|
||||
@@ -230,6 +240,7 @@
|
||||
table.button(1).enable(selectedRows == 1);
|
||||
table.button(2).enable(selectedRows == 1);
|
||||
table.button(3).enable(selectedRows == 1);
|
||||
table.button(4).enable(selectedRows == 1);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user