ferry/pkg/ldap/updatePwd.go
2020-08-18 00:53:02 +08:00

47 lines
939 B
Go

package ldap
import (
"ferry/pkg/logger"
"fmt"
"github.com/go-ldap/ldap/v3"
"golang.org/x/text/encoding/unicode"
"github.com/spf13/viper"
)
/*
@Author : lanyulei
*/
func LdapUpdatePwd(username string, oldPassword string, newPassword string) (err error) {
err = ldapConnection()
if err != nil {
return
}
defer conn.Close()
var userDn = fmt.Sprintf("cn=%v,%v", username, viper.GetString("settings.ldap.baseDn"))
err = conn.Bind(userDn, oldPassword)
if err != nil {
logger.Error("用户或密码错误。", err)
return
}
sql2 := ldap.NewModifyRequest(userDn, nil)
utf16 := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
pwdEncoded, _ := utf16.NewEncoder().String(newPassword)
sql2.Replace("unicodePwd", []string{pwdEncoded})
sql2.Replace("userAccountControl", []string{"512"})
if err = conn.Modify(sql2); err != nil {
logger.Error("密码修改失败,%v", err.Error())
return
}
return
}