diff --git a/app/enterprise/controller/account/login.go b/app/enterprise/controller/account/login.go index caf269b..d55ea93 100644 --- a/app/enterprise/controller/account/login.go +++ b/app/enterprise/controller/account/login.go @@ -68,27 +68,32 @@ func loginForSmsCaptcha(params *LoginParams) (*InstanceLoginParams, error) { return nil, err } if isExist { + // TODO:未处理删除用户身份的管理信息 // 最后一次选中的身份信息 - if _, err = model2.FirstField(mUserTenant.UserTenant, []string{"id", "uid", "uuid", "name", "identity"}, + if isExist, err = model2.FirstField(mUserTenant.UserTenant, []string{"id", "uid", "uuid", "name", "identity"}, model2.NewWhere("uid", mUserInstance.UUID), model2.NewWhere("selected", model2.UserTenantSelectedForYes)); err != nil { return nil, err + } else if isExist { + goto RETURNS } - } else { - mUserInstance.Password = utils.GetRandomString(12) + } + mUserInstance.Password = utils.GetRandomString(12) - if err = orm.GetDB().Transaction(func(tx *gorm.DB) error { + if err = orm.GetDB().Transaction(func(tx *gorm.DB) error { + if mUserInstance.ID <= 0 { if err = model2.Create(mUserInstance.UserInstance, tx); err != nil { return err } - mUserTenant.UID = mUserInstance.UUID - mUserTenant.Name = params.Captcha.Mobile - mUserTenant.Selected = model2.UserTenantSelectedForYes - return model2.Create(mUserTenant.UserTenant, tx) - }); err != nil { - return nil, err } + mUserTenant.UID = mUserInstance.UUID + mUserTenant.Name = params.Captcha.Mobile + mUserTenant.Selected = model2.UserTenantSelectedForYes + return model2.Create(mUserTenant.UserTenant, tx) + }); err != nil { + return nil, err } +RETURNS: return &InstanceLoginParams{ UID: mUserTenant.UUID, Name: mUserTenant.Name, Mobile: mUserInstance.Mobile, Identity: mUserInstance.Identity, SelectIdentity: mUserTenant.Identity, @@ -116,10 +121,17 @@ func loginForPassword(params *LoginParams) (*InstanceLoginParams, error) { } mUserTenant := model.NewUserTenant() // 最后一次选中的身份信息 - if _, err = model2.FirstField(mUserTenant.UserTenant, []string{"id", "uid", "uuid", "name", "identity"}, + if isExist, err = model2.FirstField(mUserTenant.UserTenant, []string{"id", "uid", "uuid", "name", "identity"}, model2.NewWhere("uid", mUserInstance.UUID), model2.NewWhere("selected", model2.UserTenantSelectedForYes)); err != nil { return nil, err + } else if !isExist { + mUserTenant.UID = mUserInstance.UUID + mUserTenant.Name = params.Password.Mobile + mUserTenant.Selected = model2.UserTenantSelectedForYes + if err = model2.Create(mUserTenant.UserTenant); err != nil { + return nil, err + } } return &InstanceLoginParams{ UID: mUserTenant.UUID, Name: mUserTenant.Name, Mobile: mUserInstance.Mobile, @@ -149,27 +161,6 @@ func (c *Login) Launch(mode LoginMode, params *LoginParams) (*InstanceLoginRetur return NewInstance()().Login()(ret), err } -func (c *Login) BindName(token, name string) { - // 解析token - tokenInfo := utils.JWTDecrypt(token) - - if tokenInfo == nil { - //return errors.New("") - } -} - -func (c *Login) BindMobile(token, mobile, captcha string) (*InstanceLoginReturn, error) { - pass, err := handle.NewCaptcha().Validate(&handle.CaptchaSms{ - Mobile: mobile, Captcha: captcha, - }) - if err != nil { - return nil, err - } else if !pass { - return nil, errors.New("验证码错误或已过期") - } - return nil, err -} - func NewLogin() LoginHandle { return func() *Login { return &Login{}