feat:优化项目信息

This commit is contained in:
henry
2022-03-05 15:31:22 +08:00
parent dcb5948e91
commit 4dc8deaadb
27 changed files with 401 additions and 138 deletions

View File

@ -20,6 +20,12 @@ type Account struct {
type AccountHandle func(session *session.Admin, tenantID uint64) *Account
type (
// loginHandleReturn 登陆操作返回信息
loginHandleReturn struct {
*model.SysUser
TenantID uint64 `json:"tenant_id"`
TenantIdentity model2.SysUserTenantIdentity
}
// AccountLoginParams 登陆参数
AccountLoginParams struct {
Account, Password, Captcha string
@ -32,12 +38,12 @@ type (
)
// loginHandle 登陆操作1账户密码登陆2短信验证登陆
var loginHandle = map[int]func(params *AccountLoginParams, tenantID uint64) (*model.SysUser, error){
var loginHandle = map[int]func(params *AccountLoginParams, tenantID uint64) (*loginHandleReturn, error){
1: loginForPassword, 2: loginForSmsCaptcha,
}
// loginForPassword 密码登陆
func loginForPassword(params *AccountLoginParams, tenantID uint64) (*model.SysUser, error) {
func loginForPassword(params *AccountLoginParams, tenantID uint64) (*loginHandleReturn, error) {
if params.Password == "" {
return nil, errors.New("操作错误,密码不可为空")
}
@ -53,11 +59,28 @@ func loginForPassword(params *AccountLoginParams, tenantID uint64) (*model.SysUs
if !mSysUser.ValidatePassword(params.Password) {
return nil, errors.New("操作错误,用户名或密码错误")
}
return mSysUser, nil
out := &loginHandleReturn{SysUser: mSysUser, TenantIdentity: 0}
if !mSysUser.IsAdminUser() {
// 查询用户租户信息
mSysUserTenant := model.NewSysUserTenant()
if isExist, err = model2.FirstField(mSysUserTenant.SysUserTenant, []string{"id", "tenant_id", "identity"},
model2.NewWhere("uid", mSysUser.UUID),
model2.NewWhere("tenant_id", tenantID)); err != nil {
return nil, err
} else if !isExist {
return nil, errors.New("操作错误,无权限登陆此后台,请联系管理员")
}
out.TenantID = tenantID
out.TenantIdentity = mSysUserTenant.Identity
}
return out, nil
}
// loginForSmsCaptcha 短信验证码登陆
func loginForSmsCaptcha(params *AccountLoginParams, tenantID uint64) (*model.SysUser, error) {
func loginForSmsCaptcha(params *AccountLoginParams, tenantID uint64) (*loginHandleReturn, error) {
if params.Password == "" {
return nil, errors.New("操作错误,验证码不可为空")
}
@ -68,15 +91,31 @@ func loginForSmsCaptcha(params *AccountLoginParams, tenantID uint64) (*model.Sys
mSysUser := model.NewSysUser()
isExist, err := model2.FirstField(mSysUser.SysUser, []string{
"id", "uuid", "tenant_id", "name", "mobile", "is_admin", "status",
}, model2.NewWhere("tenant_id", tenantID), model2.NewWhere("mobile", params.Account))
"id", "uuid", "name", "mobile", "is_admin", "status",
}, model2.NewWhere("mobile", params.Account))
if err != nil {
return nil, err
} else if !isExist {
return nil, errors.New("操作错误,当前帐号信息不存在或已被删除")
}
return mSysUser, nil
out := &loginHandleReturn{SysUser: mSysUser, TenantIdentity: 0}
if !mSysUser.IsAdminUser() {
// 查询用户租户信息
mSysUserTenant := model.NewSysUserTenant()
if isExist, err = model2.FirstField(mSysUserTenant.SysUserTenant, []string{"id", "tenant_id", "identity"},
model2.NewWhere("uid", mSysUser.UUID),
model2.NewWhere("tenant_id", tenantID)); err != nil {
return nil, err
} else if !isExist {
return nil, errors.New("操作错误,无权限登陆此后台,请联系管理员")
}
out.TenantID = tenantID
out.TenantIdentity = mSysUserTenant.Identity
}
return out, nil
}
// Login 登录请求
@ -99,6 +138,7 @@ func (c *Account) Login(mode int, params *AccountLoginParams, equipment, ip stri
_session.Name = data.Name
_session.Mobile = data.Mobile
_session.IsAdmin = data.IsAdminUser()
_session.IsSystemAdmin = data.TenantIdentity == model2.SysUserTenantIdentityForSystemAdmin
_uid := data.UUIDString()