mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-09-19 01:58:00 +08:00
Merge remote-tracking branch 'upstream/master'
合并主干
This commit is contained in:
@@ -19,6 +19,8 @@ var (
|
||||
ErrorMemberPasswordError = errors.New("用户密码错误")
|
||||
//ErrorMemberAuthMethodInvalid 不支持此认证方式
|
||||
ErrMemberAuthMethodInvalid = errors.New("不支持此认证方式")
|
||||
//ErrHTTPServerFail
|
||||
ErrHTTPServerFail = errors.New("系统内部异常")
|
||||
//ErrLDAPConnect 无法连接到LDAP服务器
|
||||
ErrLDAPConnect = errors.New("无法连接到LDAP服务器")
|
||||
//ErrLDAPFirstBind 第一次LDAP绑定失败
|
||||
|
@@ -105,6 +105,17 @@ func (m *Member) Login(account string, password string) (*Member, error) {
|
||||
return member, ErrorMemberPasswordError
|
||||
}
|
||||
|
||||
// TmpLogin 用于钉钉临时登录
|
||||
func (m *Member) TmpLogin(account string) (*Member, error) {
|
||||
o := orm.NewOrm()
|
||||
member := &Member{}
|
||||
err := o.Raw("select * from md_members where account = ? and status = 0 limit 1;", account).QueryRow(member)
|
||||
if err != nil {
|
||||
return member, ErrorMemberPasswordError
|
||||
}
|
||||
return member, nil
|
||||
}
|
||||
|
||||
//ldapLogin 通过LDAP登陆
|
||||
func (m *Member) ldapLogin(account string, password string) (*Member, error) {
|
||||
if beego.AppConfig.DefaultBool("ldap_enable", false) == false {
|
||||
@@ -174,21 +185,21 @@ 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() + beego.AppConfig.DefaultString("http_login_secret", "")))
|
||||
|
||||
val.Add("sn", hex.EncodeToString(h.Sum(nil)))
|
||||
|
||||
resp, err := http.PostForm(urlStr, val)
|
||||
if err != nil {
|
||||
beego.Error("通过接口登录失败 -> ", urlStr, account, err)
|
||||
return nil, err
|
||||
return nil, ErrHTTPServerFail
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
beego.Error("读取接口返回值失败 -> ", urlStr, account, err)
|
||||
return nil, err
|
||||
return nil, ErrHTTPServerFail
|
||||
}
|
||||
beego.Info("HTTP 登录接口返回数据 ->", string(body))
|
||||
|
||||
@@ -196,7 +207,7 @@ func (m *Member) httpLogin(account, password string) (*Member, error) {
|
||||
|
||||
if err := json.Unmarshal(body, &result); err != nil {
|
||||
beego.Error("解析接口返回值失败 -> ", urlStr, account, string(body))
|
||||
return nil, errors.New("解析接口返回值失败")
|
||||
return nil, ErrHTTPServerFail
|
||||
}
|
||||
|
||||
if code, ok := result["errcode"]; !ok || code.(float64) != 200 {
|
||||
@@ -204,7 +215,7 @@ func (m *Member) httpLogin(account, password string) (*Member, error) {
|
||||
if msg, ok := result["message"]; ok {
|
||||
return nil, errors.New(msg.(string))
|
||||
}
|
||||
return nil, errors.New("接口返回值格式不正确")
|
||||
return nil, ErrHTTPServerFail
|
||||
}
|
||||
if m.MemberId <= 0 {
|
||||
member := NewMember()
|
||||
|
@@ -205,16 +205,16 @@ func (m *TeamMember) FindNotJoinMemberByAccount(teamId int, account string, limi
|
||||
}
|
||||
o := orm.NewOrm()
|
||||
|
||||
sql := `select member.member_id,member.account,team.team_member_id
|
||||
sql := `select member.member_id,member.account,member.real_name,team.team_member_id
|
||||
from md_members as member
|
||||
left join md_team_member as team on team.team_id = ? and member.member_id = team.member_id
|
||||
where member.account like ? AND team_member_id IS NULL
|
||||
where member.account like ? or member.real_name like ? AND team_member_id IS NULL
|
||||
order by member.member_id desc
|
||||
limit ?;`
|
||||
|
||||
members := make([]*Member, 0)
|
||||
|
||||
_, err := o.Raw(sql, teamId, "%"+account+"%", limit).QueryRows(&members)
|
||||
_, err := o.Raw(sql, teamId, "%"+account+"%", "%"+account+"%", limit).QueryRows(&members)
|
||||
|
||||
if err != nil {
|
||||
beego.Error("查询团队用户时出错 ->", err)
|
||||
@@ -227,7 +227,7 @@ limit ?;`
|
||||
for _, member := range members {
|
||||
item := KeyValueItem{}
|
||||
item.Id = member.MemberId
|
||||
item.Text = member.Account
|
||||
item.Text = member.Account + "[" + member.RealName + "]"
|
||||
items = append(items, item)
|
||||
}
|
||||
result.Result = items
|
||||
@@ -235,9 +235,9 @@ limit ?;`
|
||||
return &result, err
|
||||
}
|
||||
|
||||
func (m *TeamMember) FindByBookIdAndMemberId(bookId,memberId int) (*TeamMember, error) {
|
||||
func (m *TeamMember) FindByBookIdAndMemberId(bookId, memberId int) (*TeamMember, error) {
|
||||
if bookId <= 0 || memberId <= 0 {
|
||||
return nil,ErrInvalidParameter
|
||||
return nil, ErrInvalidParameter
|
||||
}
|
||||
//一个用户可能在多个团队中,且一个项目可能有多个团队参与。因此需要查询用户最大权限。
|
||||
sql := `select *
|
||||
@@ -247,11 +247,11 @@ and team.member_id = ? order by team.role_id asc limit 1;`
|
||||
|
||||
o := orm.NewOrm()
|
||||
|
||||
err := o.Raw(sql,bookId,memberId).QueryRow(m)
|
||||
err := o.Raw(sql, bookId, memberId).QueryRow(m)
|
||||
|
||||
if err != nil {
|
||||
beego.Error("查询用户项目所在团队失败 ->bookId=",bookId," memberId=", memberId, err)
|
||||
return nil,err
|
||||
beego.Error("查询用户项目所在团队失败 ->bookId=", bookId, " memberId=", memberId, err)
|
||||
return nil, err
|
||||
}
|
||||
return m,nil
|
||||
return m, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user