Admin can now change the user name of a user account. Closes issue #2.
This commit is contained in:
@@ -93,6 +93,7 @@ const (
|
|||||||
AuditAdminChangeUserAccount = 111
|
AuditAdminChangeUserAccount = 111
|
||||||
AuditAdminSetAccountSecurity = 112
|
AuditAdminSetAccountSecurity = 112
|
||||||
AuditAdminLockUnlockAccount = 113
|
AuditAdminLockUnlockAccount = 113
|
||||||
|
AuditAdminSetUserName = 114
|
||||||
AuditCommunityCreate = 201
|
AuditCommunityCreate = 201
|
||||||
AuditCommunitySetMembership = 202
|
AuditCommunitySetMembership = 202
|
||||||
AuditCommunityContactInfo = 203
|
AuditCommunityContactInfo = 203
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ auditReference:
|
|||||||
text: "Admin Set Account Security"
|
text: "Admin Set Account Security"
|
||||||
- code: 113
|
- code: 113
|
||||||
text: "Admin Lock/Unlock Account"
|
text: "Admin Lock/Unlock Account"
|
||||||
|
- code: 114
|
||||||
|
text: "Admin Set User Name"
|
||||||
- code: 201
|
- code: 201
|
||||||
text: "Create New Community"
|
text: "Create New Community"
|
||||||
- code: 202
|
- code: 202
|
||||||
|
|||||||
@@ -381,6 +381,18 @@ func (u *User) Prefs(ctx context.Context) (*UserPrefs, error) {
|
|||||||
return u.prefs, nil
|
return u.prefs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *User) SetUsername(ctx context.Context, username string, setter *User, ipaddr string) error {
|
||||||
|
u.Mutex.Lock()
|
||||||
|
_, err := amdb.ExecContext(ctx, "UPDATE users SET username = ? WHERE uid = ?", username, u.Uid)
|
||||||
|
u.Mutex.Unlock()
|
||||||
|
if err == nil {
|
||||||
|
u.Username = username
|
||||||
|
AmStoreAudit(AmNewAudit(AuditAdminSetUserName, setter.Uid, ipaddr, fmt.Sprintf("uid=%d", u.Uid),
|
||||||
|
fmt.Sprintf("newname=%s", username)))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
/* SetProfileData sets the "profile" variables for this user.
|
/* SetProfileData sets the "profile" variables for this user.
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* ctx - Standard Go context value.
|
* ctx - Standard Go context value.
|
||||||
|
|||||||
+10
@@ -249,6 +249,7 @@ func UserManagementForm(ctxt ui.AmContext) (string, any) {
|
|||||||
var prefs *database.UserPrefs
|
var prefs *database.UserPrefs
|
||||||
prefs, err = user.Prefs(ctxt.Ctx())
|
prefs, err = user.Prefs(ctxt.Ctx())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
dlg.Field("user").Value = user.Username
|
||||||
dlg.Field("remind").Value = user.PassReminder
|
dlg.Field("remind").Value = user.PassReminder
|
||||||
dlg.Field("base_lvl").SetLevel(user.BaseLevel)
|
dlg.Field("base_lvl").SetLevel(user.BaseLevel)
|
||||||
dlg.Field("verify_email").SetChecked(user.VerifyEMail)
|
dlg.Field("verify_email").SetChecked(user.VerifyEMail)
|
||||||
@@ -327,6 +328,12 @@ func UserManagementSave(ctxt ui.AmContext) (string, any) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
var prefs *database.UserPrefs
|
var prefs *database.UserPrefs
|
||||||
prefs, err = user.Prefs(ctxt.Ctx())
|
prefs, err = user.Prefs(ctxt.Ctx())
|
||||||
|
if err == nil && user.Username != dlg.Field("user").Value {
|
||||||
|
u2, e := database.AmGetUserByName(ctxt.Ctx(), dlg.Field("user").Value, nil)
|
||||||
|
if e == nil && u2 != nil {
|
||||||
|
err = errors.New("user name is already in use")
|
||||||
|
}
|
||||||
|
}
|
||||||
if err == nil && !(dlg.Field("pass1").IsEmpty() && dlg.Field("pass2").IsEmpty()) {
|
if err == nil && !(dlg.Field("pass1").IsEmpty() && dlg.Field("pass2").IsEmpty()) {
|
||||||
p1 := dlg.Field("pass1").Value
|
p1 := dlg.Field("pass1").Value
|
||||||
if p1 == dlg.Field("pass2").Value {
|
if p1 == dlg.Field("pass2").Value {
|
||||||
@@ -378,6 +385,9 @@ func UserManagementSave(ctxt ui.AmContext) (string, any) {
|
|||||||
err = user.SaveFlags(ctxt.Ctx(), nf)
|
err = user.SaveFlags(ctxt.Ctx(), nf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err == nil && user.Username != dlg.Field("user").Value {
|
||||||
|
err = user.SetUsername(ctxt.Ctx(), dlg.Field("user").Value, ctxt.CurrentUser(), ctxt.RemoteIP())
|
||||||
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = user.SetProfileData(ctxt.Ctx(), dlg.Field("remind").Value, dlg.Field("dob").AsDate(), dlg.Field("descr").ValPtr(),
|
err = user.SetProfileData(ctxt.Ctx(), dlg.Field("remind").Value, dlg.Field("dob").AsDate(), dlg.Field("descr").ValPtr(),
|
||||||
ctxt.CurrentUser(), ctxt.RemoteIP())
|
ctxt.CurrentUser(), ctxt.RemoteIP())
|
||||||
|
|||||||
@@ -15,6 +15,15 @@ title: "Modify User Account"
|
|||||||
subtitle: "User: [USERNAME]"
|
subtitle: "User: [USERNAME]"
|
||||||
action: "/sysadmin/users/[USERNAME]"
|
action: "/sysadmin/users/[USERNAME]"
|
||||||
fields:
|
fields:
|
||||||
|
- type: "header"
|
||||||
|
name: "header0"
|
||||||
|
caption: "User Information"
|
||||||
|
- type: "ams_id"
|
||||||
|
name: "user"
|
||||||
|
caption: "User Name"
|
||||||
|
required: true
|
||||||
|
size: 32
|
||||||
|
maxlength: 64
|
||||||
- type: "header"
|
- type: "header"
|
||||||
name: "header1"
|
name: "header1"
|
||||||
caption: "Security Information"
|
caption: "Security Information"
|
||||||
|
|||||||
Reference in New Issue
Block a user