feat:优化项目信息
This commit is contained in:
@ -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()
|
||||
|
||||
|
Reference in New Issue
Block a user