mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-10-25 02:44:52 +08:00
merge from mindoc-org/mindoc and resolved conflict
This commit is contained in:
@@ -19,9 +19,9 @@ import (
|
||||
|
||||
"math"
|
||||
|
||||
"github.com/astaxie/beego"
|
||||
"github.com/astaxie/beego/logs"
|
||||
"github.com/astaxie/beego/orm"
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
"github.com/beego/i18n"
|
||||
"github.com/mindoc-org/mindoc/conf"
|
||||
"github.com/mindoc-org/mindoc/utils"
|
||||
@@ -77,14 +77,14 @@ func (m *Member) Login(account string, password string) (*Member, error) {
|
||||
err := o.Raw("select * from md_members where (account = ? or email = ?) and status = 0 limit 1;", account, account).QueryRow(member)
|
||||
|
||||
if err != nil {
|
||||
if beego.AppConfig.DefaultBool("ldap_enable", false) == true {
|
||||
if web.AppConfig.DefaultBool("ldap_enable", false) {
|
||||
logs.Info("转入LDAP登陆 ->", account)
|
||||
return member.ldapLogin(account, password)
|
||||
} else if beego.AppConfig.String("http_login_url") != "" {
|
||||
} else if url, err := web.AppConfig.String("http_login_url"); url != "" {
|
||||
logs.Info("转入 HTTP 接口登陆 ->", account)
|
||||
return member.httpLogin(account, password)
|
||||
} else {
|
||||
logs.Error("用户登录 ->", err)
|
||||
logs.Error("user login for `%s`: %s", account, err)
|
||||
return member, ErrMemberNoExist
|
||||
}
|
||||
}
|
||||
@@ -121,26 +121,32 @@ func (m *Member) TmpLogin(account string) (*Member, error) {
|
||||
|
||||
//ldapLogin 通过LDAP登陆
|
||||
func (m *Member) ldapLogin(account string, password string) (*Member, error) {
|
||||
if beego.AppConfig.DefaultBool("ldap_enable", false) == false {
|
||||
if !web.AppConfig.DefaultBool("ldap_enable", false) {
|
||||
return m, ErrMemberAuthMethodInvalid
|
||||
}
|
||||
var err error
|
||||
lc, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", beego.AppConfig.String("ldap_host"), beego.AppConfig.DefaultInt("ldap_port", 3268)))
|
||||
ldaphost, _ := web.AppConfig.String("ldap_host")
|
||||
lc, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", ldaphost, web.AppConfig.DefaultInt("ldap_port", 3268)))
|
||||
if err != nil {
|
||||
logs.Error("绑定 LDAP 用户失败 ->", err)
|
||||
return m, ErrLDAPConnect
|
||||
}
|
||||
defer lc.Close()
|
||||
err = lc.Bind(beego.AppConfig.String("ldap_user"), beego.AppConfig.String("ldap_password"))
|
||||
ldapuser, _ := web.AppConfig.String("ldap_user")
|
||||
ldappass, _ := web.AppConfig.String("ldap_password")
|
||||
err = lc.Bind(ldapuser, ldappass)
|
||||
if err != nil {
|
||||
logs.Error("绑定 LDAP 用户失败 ->", err)
|
||||
return m, ErrLDAPFirstBind
|
||||
}
|
||||
ldapbase, _ := web.AppConfig.String("ldap_base")
|
||||
ldapfilter, _ := web.AppConfig.String("ldap_filter")
|
||||
ldapattr, _ := web.AppConfig.String("ldap_attribute")
|
||||
searchRequest := ldap.NewSearchRequest(
|
||||
beego.AppConfig.String("ldap_base"),
|
||||
ldapbase,
|
||||
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
|
||||
//修改objectClass通过配置文件获取值
|
||||
fmt.Sprintf("(&(%s)(%s=%s))", beego.AppConfig.String("ldap_filter"), beego.AppConfig.String("ldap_attribute"), account),
|
||||
fmt.Sprintf("(&(%s)(%s=%s))", ldapfilter, ldapattr, account),
|
||||
[]string{"dn", "mail"},
|
||||
nil,
|
||||
)
|
||||
@@ -163,7 +169,7 @@ func (m *Member) ldapLogin(account string, password string) (*Member, error) {
|
||||
m.Email = searchResult.Entries[0].GetAttributeValue("mail")
|
||||
m.AuthMethod = "ldap"
|
||||
m.Avatar = "/static/images/headimgurl.jpg"
|
||||
m.Role = conf.SystemRole(beego.AppConfig.DefaultInt("ldap_user_role", 2))
|
||||
m.Role = conf.SystemRole(web.AppConfig.DefaultInt("ldap_user_role", 2))
|
||||
m.CreateTime = time.Now()
|
||||
|
||||
err = m.Add()
|
||||
@@ -177,7 +183,7 @@ func (m *Member) ldapLogin(account string, password string) (*Member, error) {
|
||||
}
|
||||
|
||||
func (m *Member) httpLogin(account, password string) (*Member, error) {
|
||||
urlStr := beego.AppConfig.String("http_login_url")
|
||||
urlStr, _ := web.AppConfig.String("http_login_url")
|
||||
if urlStr == "" {
|
||||
return nil, ErrMemberAuthMethodInvalid
|
||||
}
|
||||
@@ -188,7 +194,7 @@ func (m *Member) httpLogin(account, password string) (*Member, error) {
|
||||
"time": []string{strconv.FormatInt(time.Now().Unix(), 10)},
|
||||
}
|
||||
h := md5.New()
|
||||
h.Write([]byte(val.Encode() + beego.AppConfig.DefaultString("http_login_secret", "")))
|
||||
h.Write([]byte(val.Encode() + web.AppConfig.DefaultString("http_login_secret", "")))
|
||||
|
||||
val.Add("sn", hex.EncodeToString(h.Sum(nil)))
|
||||
|
||||
@@ -240,7 +246,7 @@ func (m *Member) httpLogin(account, password string) (*Member, error) {
|
||||
member.Account = account
|
||||
member.Password = password
|
||||
member.AuthMethod = "http"
|
||||
member.Role = conf.SystemRole(beego.AppConfig.DefaultInt("ldap_user_role", 2))
|
||||
member.Role = conf.SystemRole(web.AppConfig.DefaultInt("ldap_user_role", 2))
|
||||
member.CreateTime = time.Now()
|
||||
if err := member.Add(); err != nil {
|
||||
logs.Error("自动注册用户错误", err)
|
||||
@@ -459,9 +465,9 @@ func (m *Member) Valid(is_hash_password bool) error {
|
||||
|
||||
//删除一个用户.
|
||||
func (m *Member) Delete(oldId int, newId int) error {
|
||||
o := orm.NewOrm()
|
||||
ormer := orm.NewOrm()
|
||||
|
||||
err := o.Begin()
|
||||
o, err := ormer.Begin()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user