Merge remote-tracking branch 'upstream/master'

合并主干
This commit is contained in:
wangbin8909
2021-03-26 08:50:38 +08:00
21 changed files with 516 additions and 52 deletions

View File

@@ -19,6 +19,8 @@ var (
ErrorMemberPasswordError = errors.New("用户密码错误")
//ErrorMemberAuthMethodInvalid 不支持此认证方式
ErrMemberAuthMethodInvalid = errors.New("不支持此认证方式")
//ErrHTTPServerFail
ErrHTTPServerFail = errors.New("系统内部异常")
//ErrLDAPConnect 无法连接到LDAP服务器
ErrLDAPConnect = errors.New("无法连接到LDAP服务器")
//ErrLDAPFirstBind 第一次LDAP绑定失败

View File

@@ -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()

View File

@@ -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
}